Docker 17
引擎: 管理员指南 | Engine: Admin Guide

Journald日志记录驱动程序(引擎) | Journald logging driver (Engine)

日志记录驱动程序

journald日志驱动程序将容器日志发送到systemd日刊.日志条目可以使用journalctl命令,通过使用journalAPI,或使用docker logs命令。

除了日志消息本身的文本之外,journald日志驱动程序将以下元数据与每条消息一起存储在日记中:

FieldDescription
CONTAINER_IDThe container ID truncated to 12 characters.
CONTAINER_ID_FULLThe full 64-character container ID.
CONTAINER_NAMEThe container name at the time it was started. If you use docker rename to rename a container, the new name is not reflected in the journal entries.
CONTAINER_TAGThe container tag (log tag option documentation).
CONTAINER_PARTIAL_MESSAGEA field that flags log integrity. Improve logging of long log lines.

使用

使用journald驱动程序作为默认日志记录驱动程序,设置log-driverlog-opt控件中的适当值的键。daemon.json文件,该文件位于/etc/docker/在linux主机上或C:\ProgramData\docker\config\daemon.json在WindowsServer上。有关+配置Docker的更多信息,请使用daemon.json,见+daemon.json...

下面的示例将日志驱动程序设置为journald*

{ "log-driver": "journald" }

重新启动Docker以使更改生效。

若要为特定容器配置日志驱动程序,请使用--log-driver标志上docker run命令。

$ docker run --log-driver=journald ...

备选方案

使用--log-opt NAME=VALUE标志指定附加journald日志驱动程序选项。

tag

指定要设置的模板CONTAINER_TAG价值journald原木。请参阅日志标记选项文档若要自定义日志标记格式,请执行以下操作。

labels,,,env,和eng-regex

labelsenv每个选项都采用逗号分隔的键列表。如果有碰撞labelenv键的值。env优先考虑。每个选项都会向日记中添加附加元数据和每条消息。

env-regexenv.将其设置为正则表达式以匹配与日志记录相关的环境变量.。它用于高级日志标记选项...

关于容器名称的说明

中记录的值。CONTAINER_NAME字段是在启动时设置的容器的名称。如果你用docker rename若要重命名容器,请使用新名称未反映在日记里。日记账条目将继续使用原始名称。

检索日志消息journalctl

使用journalctl命令检索日志消息。可以应用筛选器表达式将检索到的消息限制为与特定容器关联的消息:

$ sudo journalctl CONTAINER_NAME=webserver

您可以使用其他筛选器进一步限制检索的消息。大-b标志仅检索上次系统启动后生成的消息:

$ sudo journalctl -b CONTAINER_NAME=webserver

-o标志指定重试日志消息的格式。使用-o json返回JSON格式的日志消息。

$ sudo journalctl -o json CONTAINER_NAME=webserver

检索日志消息。journalAPI

此示例使用systemd用于检索容器日志的Python模块:

import systemd.journal reader = systemd.journal.Reader() reader.add_match('CONTAINER_NAME=web') for msg in reader: print '{CONTAINER_ID_FULL}: {MESSAGE}'.format(**msg)

期刊码头工人测井司机