Home > other >  Getting all logs from Stdout in Docker
Getting all logs from Stdout in Docker

Time:09-27

I run a simple Flask application in a docker container.

To run it i do :

docker run --name my_container_name my_image_name

The logs are redirected to stdout. So after this command, i see as an output :

 * Serving Flask app 'main'
 * Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
 * Running on all addresses (0.0.0.0)
 * Running on http://127.0.0.1:8080
 * Running on http://172.17.0.2:8080
Press CTRL C to quit

When i want to get the logs with a separate command, i do :

docker container logs my_container_name

It returns well the logs. Exactly the same output as the output written above.

But if I try to redirect the output to a file :

docker container logs my_container_name > mylogfile.log

I don't get all the logs! I get only :

 * Serving Flask app 'main'
 * Debug mode: off

Why that ?

CodePudding user response:

Running the container with a dedicated Pseudo-TTY solves the problem.

docker run -t --name my_container_name my_image_name

The parameter "-t" solved my issue.....But i don't understand why.

CodePudding user response:

No need to redirect logs, just use:

tail -f `docker inspect --format='{{.LogPath}}' my_container_name`

or if you don`t like it , you can try:

docker logs -f my_container_name &> my_container.log

the trick is the &> which redirects both pipes to the file

  • Related