logging - 将 docker-compose 日志保存到文件

标签 logging docker docker-compose

我在构建服务器上运行了单元测试,并希望在出现故障时捕获日志结果以进行分析。我还没有找到将 docker-compose logs 的输出重定向到文件的方法,或者找到日志文件本身实际存在的位置。

我想要相当于:

docker-compose logs > logs.txt

编辑 - 澄清:

我所有的 docker 容器都会产生有用的日志,手动运行 docker-compose logs 会显示这些日志。我想编写此过程的脚本,以将这些相同的日志保存到作为我的构建服务器上的工件的文件中。本质上,docker-compose logs 的输出保存到文件中,但是 docker-compose logs 永远不会退出。

最佳答案

默认情况下,docker 使用 json-file 驱动程序来记录您的容器日志,日志的原始 json 输出可以在以下位置找到:

/var/lib/docker/containers/[container-id]/[container-id]-json.log

你可以通过运行得到这个位置:

docker inspect --format='{{.LogPath}}' [container-id or container-name]

当您运行 docker-compose logs [service-name] 时,docker-compose 将附加到您引用的服务(容器)和 LogPrinter object 将输出上述文件的内容,但已格式化,以便于阅读。

相关文档:https://docs.docker.com/compose/compose-file/#logging

关于logging - 将 docker-compose 日志保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35414495/

相关文章:

java - 如何在spring-boot中禁用控制台日志记录?

windows - 在 Windows 中,是否有与 syslog 或 OS X 的 Console.app 等效的功能来记录特定错误?

docker - 通过 docker 使用 postgres 设置 nextcloud

Docker 应用程序无法在 docker-compose 中使用 Shiny 代理启动,但可以使用 run

Ruby 记录器丢失格式

java - 在 spring 和数据库中记录或审计有两个目的:方法、任务和作业花费了多少时间,并存储计算以用于审计调试目的

bash - 在分离模式下运行docker时设置环境变量

docker - openresty:alpine docker容器中的set_by_lua和os.getenv

docker - 在docker集群中运行多个身份服务器实例

Docker 链接容器、Docker 网络、Compose 网络 - 我们现在应该如何 'link' 容器