如何取消Docker守护进程日志中JSON日志内容的转义?
取消Docker守护进程日志的JSON转义
默认情况下,Docker的json-file日志驱动会把容器输出的内容当作普通字符串,打包进{"log": "..."}结构里——如果容器输出的是JSON,内部引号就会被转义,出现你看到的{"log": {\"key\": \"value\"}}格式。要取消这种转义,可以通过以下方法配置日志驱动:
全局生效配置(所有容器适用)
- 编辑或创建Docker守护进程配置文件
/etc/docker/daemon.json,添加以下内容:{ "log-driver": "json-file", "log-opts": { "json-structured-logs": "true" } } - 重启Docker服务让配置生效:
开启sudo systemctl restart dockerjson-structured-logs后,只要容器输出的是合法JSON,日志驱动会直接解析并保留原始JSON结构,不再将其作为字符串封装到log字段中,自然也就不会产生转义。
单容器生效配置(仅针对特定容器)
如果不想全局修改,在启动容器时添加日志选项即可:
docker run --log-driver json-file --log-opt json-structured-logs=true <你的镜像名>
注意点
- 这个配置只对容器输出的标准JSON内容有效,如果输出不是合法JSON,驱动还是会按普通字符串处理。
- 全局配置修改后,已在运行的容器不会自动应用,需要重启这些容器才能生效。
内容的提问来源于stack exchange,提问作者mifol68042
相关产品推荐
相关产品推荐

