如何将 docker 容器日志重定向到单个文件?

新手上路,请多包涵

我想将我的 docker 容器的所有日志重定向到单个日志文件以分析它们。我试过了

docker logs container > /tmp/stdout.log 2>/tmp/stderr.log

但这会登录两个不同的文件。我已经试过了

docker logs container > /tmp/stdout.log

但它没有用。

原文由 KETAN PATIL 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

无需重定向日志。

Docker 默认将日志存储到一个日志文件中。要检查日志文件路径运行命令:

 docker inspect --format='{{.LogPath}}' containername

/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log

打开该日志文件并进行分析。

如果您重定向日志,那么您只会在重定向之前获得日志。您将无法看到实时日志。

编辑:

要查看实时日志,您可以运行以下命令

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

笔记:

这个日志文件 /var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log 只有在docker生成日志时才会创建,如果没有日志,那么这个文件就不会存在。有时如果我们运行命令 docker logs containername 类似,它什么也不返回。在这种情况下,该文件将不可用。

原文由 pl_rock 发布,翻译遵循 CC BY-SA 3.0 许可协议

这个选项怎么样:

docker logs containername >& logs/myFile.log

它不会重定向问题中要求的日志,而是将它们复制一次到特定文件。

原文由 Eddy Hernandez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题