如何使用docker日志从容器中打印所有(包括stderr)

时间:2018-01-11 13:39:57

标签: docker logging containers

当我将应用程序运行到容器中时,我可以看到此输出:

docker logs 3aee2bd90da4

> Dot-Service initializing with env_type: CA [2018-01-11
> 09:47:30,487][16:MainProcess][webapps.py:102][INFO] DAS-conductor
> initialized with settings CAConfig

现在,从docker实例中,我只看到“stdout”:

root @ 3acd2bd90da4:/ usr / src / app#。/ bin / run.sh

Dot-Service initializing with env_type: CA
[2018-01-11 09:47:30,487][16:MainProcess][webapps.py:102][INFO] DAS-conductor initialized with settings CAConfig
Traceback (most recent call last):
  File "/usr/src/app/bin/..//run.py", line 25, in <module>
    cmd_main()
  File "/usr/src/app/bin/..//run.py", line 22, in cmd_main

它错过了来自docker logs命令的“Traceback”(stderr)开头的错误部分

当我在容器内运行命令时,如何打印所有日志?

感谢

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题,您可以使用Dockerfile中的以下代码片段将应用程序日志放到Docker容器日志中 -

RUN ln -sf /dev/stdout /app/out/access.log \
        && ln -sf /dev/stderr /app/out/error.log

您需要确保您的应用程序将输出写入相应的文件&amp;您将能够在容器日志中看到它们。 Nginx官方码头图像也是如此。

参考 - https://github.com/nginxinc/docker-nginx/blob/8921999083def7ba43a06fabd5f80e4406651353/mainline/jessie/Dockerfile#L21-L23

答案 1 :(得分:0)

如果您需要按照日志输出,而不是仅查看最后一行输出,请使用:$ docker logs -f https://docs.docker.com/engine/reference/commandline/logs/