logging driver 说明
Docker中的日志驱动程序(logging driver)用于控制容器的日志记录方式,允许您将容器中生成的日志发送到不同的目标,如标准输出、文件、远程日志服务器等。
logging driver 类型
none: 容器没有可用的日志,并且docker logs不返回任何输出。
local: 日志以旨在最小化开销的自定义格式存储。
json-file: 日志格式为 JSON。Docker 的默认日志记录驱动程序。随着时间的推移,这些日志文件的大小会不断扩大,从而导致磁盘资源可能耗尽。
syslog: 将日志消息写入syslog守护程序。该syslog守护进程必须在主机上运行。
journald: 将日志消息写入journald守护程序. 该journald守护进程必须在主机上运行。
gelf: 将日志消息写入 Graylog 扩展日志格式 (GELF) 端点,例如 Graylog 或 Logstash。
fluentd: 将日志消息写入fluentd守护程序。该fluentd守护进程必须在主机上运行。
awslogs: 将日志消息写入 Amazon CloudWatch Logs。
splunk: 将日志消息写入 Splunk Enterprise 和 Splunk Cloud 中的 HTTP 事件收集器。
etwlogs: 将日志消息写入 Windows 事件跟踪 (ETW) 事件。仅适用于 Windows 平台。
gcplogs: 将日志消息写入 Google Cloud Platform (GCP) 日志记录。
container logs
默认情况下,"docker logs"或"docker service logs"会显示命令的输出,就像在终端中交互式运行命令时一样。Unix 和 Linux 命令通常在运行时会打开三个 I/O 流,称为 STDIN、STDOUT 和 STDERR。 STDIN 是命令的输入流,可能包括来自键盘或其他命令的输入。STDOUT 通常是命令的正常输出,而 STDERR 通常用于输出错误消息。默认情况下,“docker logs”显示命令的 STDOUT 和 STDERR。
JSON File logging driver
json-file 说明
日志格式为 JSON。Docker 的默认日志记录驱动程序。随着时间的推移,这些日志文件的大小会不断扩大,从而导致磁盘资源可能耗尽。为了避免日志数据过度使用磁盘的问题,需要配置日志轮换功能。
json-file 日志驱动程序使用基于文件的存储。这些文件设计为仅由 Docker 守护程序访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志系统并导致意外行为,因此应该避免这样做。
json-file 常用选项
max-size: 日志在滚动之前的最大大小。一个正整数加上表示单位的修饰符(k、m 或 g)。默认值为 -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: 与标签类似且兼容。一个正则表达式,用于匹配与日志相关的标签。--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
json-file 配置方式
可以通过在Docker守护程序启动时的--log-driver=json-file参数或在容器运行时的--log-driver=json-file参数来指定使用JSON File日志驱动程序。
daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
命令行
# docker run --log-driver json-file --log-opt max-size=10m alpine echo hello world
json-file 日志输出位置
JSON File日志驱动程序将容器的标准输出和标准错误输出写入JSON格式的文件中,默认情况下保存在容器的/var/lib/docker/containers/<container-id>/<container-id>-json.log文件中。
json-file 示例
docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash
Local file logging driver
Local file 说明
local日志驱动程序捕获容器的stdout/stderr输出,将其写入一个为性能和磁盘使用进行了优化的内部存储。
默认情况下,本地驱动程序为每个容器保留100MB的日志消息,并使用自动压缩来减小磁盘上的大小。默认值100MB是基于每个文件的默认大小为20M以及默认文件数为5(用于日志轮换)的考虑。
本地日志驱动程序使用基于文件的存储。这些文件设计为仅由 Docker 守护程序访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志系统并导致意外行为,因此应该避免这样做。
Local file 常用选项
max-size:日志在滚动之前的最大大小。一个正整数加上表示单位的修饰符(k、m 或 g)。默认为 20m。--log-opt max-size=10m
max-file:可以存在的最大日志文件数目。如果滚动日志创建了过多的文件,将删除最旧的文件。正整数。默认为 5。--log-opt max-file=3
compress:启用已轮换日志文件的压缩。默认情况下为启用状态。--log-opt compress=false
Local file 配置方式
daemon.json
{
"log-driver": "local",
"log-opts": {
"max-size": "10m"
}
}
命令行
docker run \
--log-driver local --log-opt max-size=10m \
alpine echo hello world
Local file 示例
# docker run -it --log-driver local --log-opt max-size=10m --log-opt max-file=3 alpine ash
参考文档
https://docs.docker.com/config/containers/logging/configure/
标签:opt,log,--,max,file,docker,日志,驱动程序 From: https://www.cnblogs.com/wangguishe/p/18154556