View logs for all docker containers simultaneously

ⅰ亾dé卋堺 提交于 2021-01-16 05:15:43

问题


I currently use docker for my backend, and when I first start them up with

docker-compose up

I get log outputs of all 4 dockers at once, so I can see how they are interacting with each other when a request comes in. Looking like this, one request going from nginx to couchdb

http://i.imgur.com/E4GQ43F.png

The issue is now that I am running on GCE with load balancing, when a new VM spins up, it auto starts the dockers and runs normally, I would like to be able to access a load balanced VM and view the live logs, but I can not get docker to allow me this style, when I use logs, it gives me normal all white font with no label of where it came from.

Using

docker events  

does nothing, it won't return any info.

tldr; what is the best way to obtain a view, same as the log output you get when running "docker-compose up"


回答1:


If using docker-compose, you use

docker-compose logs --tail=0 --follow

instead of

docker logs --tail=0 --follow

This will get the output I was originally looking for.




回答2:


You can see the logs for all running containers with

docker ps -q | xargs -L 1 docker logs

In theory this might work for the --follow too if xargs is ran with -P <count>, where the count is higher than the number of running containers.




回答3:


I use a variation of this to live tail (--follow) all logs and indicate which log is tailing at the time. This bash includes both stdout and stderr. Note you may need to purge the /tmp dir of *.{log,err} afterwards.

for c in $(docker ps -a --format="{{.Names}}")
do
       docker logs -f $c > /tmp/$c.log 2> /tmp/$c.err &
done
tail -f /tmp/*.{log,err}

Hope this helps. Logging has become so problematic these days, and other get-off-my-lawn old man rants...




回答4:


If you are using Docker Swarm, you can find your services by

docker service ls

Grap the id, and then run

docker service logs $ID -f 

if the service is defined with tty: true, then you must run with the --raw flag. Notice, this wont tell you which container is giving the outputted log entry.



来源:https://stackoverflow.com/questions/36756751/view-logs-for-all-docker-containers-simultaneously

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!