docker有多个日志记录驱动程序吗?

时间:2017-07-12 10:41:55

标签: docker docker-compose

是否可以为同一个容器使用多个日志记录驱动程序 - 比如fluentd和json?

谢谢。

4 个答案:

答案 0 :(得分:9)

从18.03版开始,Docker Engine Enterprise(EE)支持多个日志驱动程序,但它不在Community Edition(CE)中:

https://docs.docker.com/ee/engine/release-notes/#18031-ee-1-2018-06-27

答案 1 :(得分:4)

不,您只能指定一个日志记录驱动程序/容器。

要为日志提供单独的接收器,您必须依靠流畅的接收日志(或读取json日志文件)并配置管道来分发它们。

答案 2 :(得分:1)

自版本 20.10.1 起,Docker CE 中提供双重日志记录。

该功能以前仅在 Docker Enterprise 版本中可用,因为版本 18.03.1-ee-1

官方文档章节“Dual Logging”没有反映这一点(截至 2021-01-04)。

该功能已在拉取请求 #40543 中开源,并于 2020 年 2 月 27 日合并到 master

moby/moby 中的相关 GitHub 问题 #17910 已关闭,评论如下:

<块引用>

即将发布的 Docker 20.10 版本将带有上述功能(“双日志记录”),它使用本地日志记录驱动程序作为环形缓冲区,这使得 docker 日志在使用没有“读取”功能的日志记录驱动程序时工作" 支持(例如,将日志发送到远程日志聚合器的日志驱动程序)。

答案 3 :(得分:0)

否,您不能指定the official documentation中所述的单个日志记录驱动程序:

您不能指定多个日志驱动程序。

日志驱动程序文档也表明:

要将Docker守护程序配置为默认为特定日志记录 驱动程序,将log-driver的值设置为日志记录驱动程序的名称 在daemon.json文件中...`

{
  "log-driver": "syslog"
}

您会看到"log-driver"需要一个字符串而不是一个数组。

事实上,自Docker Engine Enterprise 18.03.1-ee-1起,Docker就“启用”了双重日志记录功能,该功能允许配置任何日志记录驱动程序日志,同时仍然可以使用docker logs进行读取。
例如,在该功能之前,请在daemon.json中指定该驱动程序:

{
  "log-driver": "syslog"
}

允许将日志重定向到syslog服务器,但这也使Docker不再将任何日志发布到本地日志驱动程序。
现在情况并非如此,该信息在两个目的地均可用。

从Docker Engine Enterprise 18.03.1-ee-1开始,您可以使用 docker日志读取容器日志,无论配置如何 记录驱动程序或插件。此功能,有时称为 双重日志记录,允许您使用docker日志读取容器日志 本地格式一致,无论远程日志驱动程序如何 之所以使用,是因为引擎已配置为将信息记录到 “本地”日志记录驱动程序。

相关问题