JSON 文件日志记录驱动程序

默认情况下,Docker 捕获所有容器的标准输出(和标准错误),并使用 JSON 格式将它们写入文件中。 JSON 格式用其来源 (stdoutstderr) 及其时间戳来注释每一行。每个日志文件仅包含有关一个容器的信息。

{
  "log": "Log line is here\n",
  "stream": "stdout",
  "time": "2019-01-01T11:11:11.111111111Z"
}

警告

日志记录驱动程序json-file使用基于文件的存储。这些文件被设计为由 Docker 守护进程独占访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志系统并导致意外行为,应避免。

用法

要将json-file驱动程序用作默认日志记录驱动程序,请将log-driverlog-opts键设置为文件中的适当值daemon.json,该文件位于/etc/docker/Linux 主机或 C:\ProgramData\docker\config\Windows Server 上。如果该文件不存在,请先创建它。有关使用配置 Docker 的更多信息daemon.json,请参阅 daemon.json

以下示例将日志驱动程序设置为json-file并设置max-sizemax-file选项以启用自动日志轮换。

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

笔记

log-opts配置文件中的配置选项daemon.json必须以字符串形式提供。max-file因此,布尔值和数值(例如上例中的值 )必须用引号 ( ") 括起来。

重新启动 Docker 以使更改对新创建的容器生效。现有容器不会自动使用新的日志记录配置。

您可以使用或--log-driver标志为特定容器设置日志记录驱动程序 :docker container createdocker run

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

选项

日志记录驱动程序json-file支持以下日志记录选项:

选项描述示例值
max-size滚动之前日志的最大大小。一个正整数加上表示测量单位的修饰符(kmg)。默认为 -1(无限制)。--log-opt max-size=10m
max-file可以存在的日志文件的最大数量。如果滚动日志会产生多余的文件,则最旧的文件将被删除。仅当也设置时才有效max-size。正整数。默认为 1。--log-opt max-file=3
labels启动 Docker 守护进程时适用。该守护进程接受的与日志记录相关的标签的逗号分隔列表。用于高级 日志标记选项--log-opt labels=production_status,geo
labels-regex与 类似并兼容labels。用于匹配与日志记录相关的标签的正则表达式。用于高级 日志标记选项--log-opt labels-regex=^(production_status|geo)
env启动 Docker 守护进程时适用。该守护进程接受的与日志记录相关的环境变量的逗号分隔列表。用于高级 日志标记选项--log-opt env=os,customer
env-regex与 类似并兼容env。用于匹配与日志记录相关的环境变量的正则表达式。用于高级 日志标记选项--log-opt env-regex=^(os|customer)
compress切换旋转日志的压缩。默认为disabled.--log-opt compress=true

例子

此示例启动一个alpine容器,该容器最多可包含 3 个日志文件,每个日志文件的大小不超过 10 MB。

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash