使用 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 容器日志的主要内容,如果未能解决你的问题,请参考以下文章

Dock栏消失了怎么办?快速找到Dock栏

uvicorn 抑制了 gelf 驱动程序的 python 系统日志

Ubuntu 18.04 上的 FLTK:在 Dock 上设置图标的弹出文本

NXLog:GELF UDP 输出的 Json 输入

如何更改 Java 程序的 Dock 图标?

docker log driver