使用 gelf 驱动程序时查看主机上的 docker 容器日志
Posted
技术标签:
【中文标题】使用 gelf 驱动程序时查看主机上的 docker 容器日志【英文标题】:See docker container logs on host while using gelf driver 【发布时间】:2018-10-10 10:31:29 【问题描述】:我正在使用 gelf 作为我的 docker 容器的日志驱动程序。在日志选项中,我提供了 udp 端点。
现在当我启动容器时,一切都按预期工作。
我的问题是,是否可以在它运行的主机中看到容器日志(而不是在 UDP 端点)?
【问题讨论】:
您的意思是将容器日志视为“docker logs ...”吗? @Hazim docker logs 不适用于不向commands output 发送日志的日志记录驱动程序。要回答这个问题,不,不可能在目的地以外的任何其他地方看到日志 @Hazim 我无论如何都在寻找主机中的日志,我知道当我们更改日志驱动程序时,无法从 docker 日志中看到日志。但是有没有其他办法? 不推荐这样做的方式。我确实在我的答案中添加了一个解决方法,但它是一个“解决方法”,不确定它是否适合您的需要 【参考方案1】:如果您正在谈论在运行 docker 容器的机器上通过 docker logs
命令查看日志,则在使用其他日志记录驱动程序时不可能这样做。
见limitations of logging drivers。
如果您知道日志在容器内的位置,解决方法是编写一个脚本,从容器中复制日志文件并显示它,或者只是将exec
's 复制到容器中并显示它.但我真的不建议这样做。
类似:
#!/bin/bash
docker cp mycontainer:/var/log/mylog.log $(pwd)/logs/mylog.log
tail -f $(pwd)/logs/mylog.log
【讨论】:
【参考方案2】:这取决于 Docker 版本。
Docker 20.10 及更高版本引入了“双重日志记录”,它使用本地缓冲区,允许您对任何日志记录驱动程序使用 docker logs 命令。
【讨论】:
以上是关于使用 gelf 驱动程序时查看主机上的 docker 容器日志的主要内容,如果未能解决你的问题,请参考以下文章
uvicorn 抑制了 gelf 驱动程序的 python 系统日志