包含来自容器的日志的日志文件在哪里?

新手上路,请多包涵

我正在使用 docker-compose 运行多个容器。我可以使用命令 docker-compose logs 查看应用程序日志。但是,例如,我想访问原始日志文件以将其发送到某个地方?它位于哪里?我猜它是每个容器(在容器内?)的单独日志,但我在哪里可以找到它?

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

阅读 944
2 个回答

可以在以下位置找到容器的日志:

 /var/lib/docker/containers/<container id>/<container id>-json.log

(如果您使用默认的日志格式,即 json)

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

您可以 docker inspect 每个容器查看它们的日志在哪里:

 docker inspect --format='{{.LogPath}}' $INSTANCE_ID


而且,如果您试图找出日志在哪里管理它们的集体大小,或调整日志记录本身的参数,您会发现以下相关内容。

修复为日志保留的空间量

这取自 Request for the ability to clear log history (issue 1083) ):

Docker 1.8 和 docker-compose 1.4 已经存在使用 docker compose log driver 和 log-opt max-size 限制日志大小的方法:

 mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

在版本 ‘2’ 的 docker compose 文件中,语法发生了一些变化:

 version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(请注意,在这两种语法中,数字都表示为字符串,用引号括起来)

docker-compose logs 未终止

  • 问题 1866 :如果容器已经停止,命令 logs 不会退出

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

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