我想将我的 docker 容器的所有日志重定向到单个日志文件以分析它们。我试过了
docker logs container > /tmp/stdout.log 2>/tmp/stderr.log
但这会登录两个不同的文件。我已经试过了
docker logs container > /tmp/stdout.log
但它没有用。
无需重定向日志。
Docker 默认将日志存储到一个日志文件中。要检查日志文件路径运行命令:
docker inspect --format='{{.LogPath}}' containername /var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
打开该日志文件并进行分析。
如果您重定向日志,那么您只会在重定向之前获得日志。您将无法看到实时日志。
编辑:
要查看实时日志,您可以运行以下命令
tail -f `docker inspect --format='{{.LogPath}}' containername`
笔记:
仅当 docker 生成日志时才会创建此日志文件/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log,如果没有日志,则此文件将不存在。docker logs containername如果我们运行命令并且它不返回任何内容,它就像有时一样。在这种情况下,该文件将不可用。
/var/lib/docker/containers/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334/f844a7b45ca5a9589ffaa1a5bd8dea0f4e79f0e2ff639c1d010d96afb4b53334-json.log
docker logs containername