我有一个运行Apache2的容器,并有一些日志文件可以将输入打印到/dev/stdout
和/dev/stderr
。运行docker-compose logs -f
时,它会盲目打印stdout
和stderr
混合。有没有办法只显示两个中的一个?
lrwxrwxrwx 1 root root 11 Oct 10 01:22 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 Oct 10 01:22 error.log -> /dev/stderr
lrwxrwxrwx 1 root root 11 Oct 10 01:22 other_vhosts_access.log -> /dev/stdout
理想情况下,我希望可选择在输出之间切换。我可以想象--only-stderr
和--only-stdout
标志。我知道可能的解决方法,但我很感兴趣,如果这是原生的可能。
答案 0 :(得分:0)
我明白你的意思了,我也需要做同样的事情,但显然docker-compose目前不支持它。
查看此功能请求:https://github.com/docker/compose/issues/6078
尽管您不能使用docker-compose做到这一点,但仍然可以通过跟踪特定Docker容器的日志来实现类似的目的。
您写了“我知道此问题的可能解决方法”,因此您可能已经知道了,但是希望它将帮助其他访问此页面的人:)
执行docker-compose up
之后,列出您正在运行的容器:
docker ps
复制给定容器的名称并阅读其日志:
docker logs NAME_OF_THE_CONTAINER -f
仅阅读错误日志:
docker logs NAME_OF_THE_CONTAINER -f 1>/dev/null
仅阅读访问日志:
docker logs NAME_OF_THE_CONTAINER -f 2>/dev/null