配置日志记录驱动程序 | Configuring logging drivers (Engine)
Docker 包含多种日志记录机制来帮助您从运行容器和服务中获取信息。这些机制被称为日志驱动程序。
每个 Docker 守护进程(daemon)都有一个默认日志记录驱动程序,每个容器使用该驱动程序,除非您将其配置为使用其他日志记录驱动程序
除了使用 Docker 附带的日志驱动程序之外,您还可以实现和使用日志驱动程序插件。记录驱动程序插件在 Docker 17.05和更高版本中可用。
配置默认记录驱动程序
要将 Docker 守护程序(daemon)配置为默认为特定的日志记录驱动程序,请将log-driver
值设置为位于 Linux 主机/etc/docker/
或 Windows 服务器主机上C:\ProgramData\docker\config\
的daemon.json
文件中的日志记录驱动程序的名称。默认日志记录驱动程序是json-file
。以下示例显式地将默认日志记录驱动程序设置为syslog
:
{
"log-driver": "syslog"
}
如果日志记录驱动程序具有可配置选项,则可以使用log-opts
键将它们作为 JSON 数组设置在daemon.json
文件中。以下示例在json-file
日志记录驱动程序上设置两个可配置选项:
{
"log-driver": "json-file",
"log-opts": {
"labels": "production_status",
"env": "os,customer"
}
}
如果您不指定日志记录驱动程序,则默认为json-file
。因此,JSON之类的命令的默认输出,诸如docker inspect <CONTAINER>
。
要查找 Docker 守护程序(daemon)的当前默认日志记录驱动程序,请运行docker info
并且搜索Logging Driver
。您可以在 Linux,macOS 或在 Windows 上的 PowerShell 上使用以下命令:
$ docker info |grep 'Logging Driver'
Logging Driver: json-file
配置容器的日志记录驱动程序
在启动容器时,可以使用--log-driver
标志将其配置为使用与 Docker 守护程序(daemon)默认值不同的日志记录驱动程序。如果日志记录驱动程序具有可配置选项,则可以使用--log-opt <NAME>=<VALUE>
标志的一个或多个实例来设置它们。即使容器使用默认的日志记录驱动程序,它也可以使用不同的可配置选项。
以下示例带有none
日志驱动程序启动 Alpine 容器。
$ docker run -it --log-driver none alpine ash
要查找正在运行的容器的当前日志记录驱动程序,如果守护程序正在使用json-file
日志记录驱动程序,请运行以下docker inspect
命令,将容器名称或 ID 替换为<CONTAINER>
:
$ docker inspect -f '{{.HostConfig.LogConfig.Type}}' <CONTAINER>
json-file
使用环境变量或标签与日志驱动程序
一些日志记录驱动程序将一个容器的--env|-e
或--label
多个标志的值添加到容器的日志中。本示例使用 Docker 守护程序(daemon)的默认日志记录驱动程序启动容器(让我们假设json-file
),但设置环境变量os=ubuntu
。
$ docker run -dit --label production_status=testing -e os=ubuntu alpine sh
如果日志记录驱动程序支持它,则会向日志输出添加其他字段。以下输出由json-file
日志驱动程序生成:
"attrs":{"production_status":"testing","os":"ubuntu"}
支持的日志驱动
支持以下日志记录驱动程序。如果适用,请参阅每个驱动程序文档的链接以了解其可配置选项。如果您使用的是日志驱动程序插件,则可能会看到更多选项。
驱动 | 描述 | |
---|---|---|
none | 没有日志将可用于容器和码头日志不会返回任何输出。 | |
json-file | 日志格式为JSON。Docker的默认日志记录驱动程序。 | |
syslog | 将日志消息写入syslog工具。系统日志守护程序必须在主机上运行。 | |
journald | 将日志消息写入日记帐。journald守护程序必须在主机上运行。 | |
gelf | 将日志消息写入Graylog扩展日志格式(GELF)端点,如Graylog或Logstash。 | |
fluentd | 将日志消息写入fluentd(正向输入)。fluentd守护进程必须在主机上运行。 | |
awslogs | 将日志消息写入Amazon CloudWatch Logs。 | |
splunk | 使用HTTP事件收集器将日志消息写入splunk。 | |
etwlogs | 将日志消息写为Windows事件跟踪(ETW)事件。仅在Windows平台上可用。 | |
gcplogs | 将日志消息写入Google Cloud Platform(GCP)日志记录。 | |
记录驱动程序的限制
docker logs
命令不适用于除json-file
和journald
之外的其他驱动程序。
本文档系腾讯云开发者社区成员共同维护,如有问题请联系 cloudcommunity@tencent.com