Docker日志将JSON日志解释为字符串

Docker日志将JSON日志解释为字符串,json,logging,docker,docker-compose,Json,Logging,Docker,Docker Compose,我们的Go服务器以JSON格式将日志输出到stdout,每一行看起来如下所示: {"time": "2017-06-01 14:00:00", "message": "Something happened", "level": "DEBUG"} 我们的docker compose使用标准json文件记录器,它将log字段中的每一行作为转义字符串进行包装,如下所示: { "log": "{\"time\": \"2017-06-01 14:00:00\", \"message\": \"So

我们的Go服务器以JSON格式将日志输出到stdout,每一行看起来如下所示:

{"time": "2017-06-01 14:00:00", "message": "Something happened", "level": "DEBUG"}

我们的docker compose使用标准json文件记录器,它将
log
字段中的每一行作为转义字符串进行包装,如下所示:

{
  "log": "{\"time\": \"2017-06-01 14:00:00\", \"message\": \"Something happened\", \"level\": \"DEBUG\"}\"",
  "timestamp": "<the time>",
  ...more fields...
}
{
“日志”:“{“时间”:“2017-06-01 14:00:00\”,“消息”:“发生了什么事”,“级别”:“调试”}\”,
“时间戳”:“,
…更多领域。。。
}
但我们不希望日志字段作为字符串转义,我们希望它作为JSON嵌入在同一级别:

{
  "log": {
     "time": "2017-06-01 14:00:00", 
     "message": "Something happened", 
     "level": "DEBUG"
  },
  "timestamp": "<the time>",
  ...more fields...
}
{
“日志”:{
“时间”:“2017-06-01 14:00:00”,
“消息”:“发生了什么事”,
“级别”:“调试”
},
“时间戳”:“,
…更多领域。。。
}

这可以实现吗?

看起来这是不可能的。但是我可以将JSON字符串转换为Filebeat中的实际JSON,我们使用它将日志传递给Kibana和Elastalert。为此,我使用了
Filebeat.yml
处理器下的
解码JSON_字段
选项docker compose使用标准json文件记录器,将日志字段中的每一行包装为转义字符串,如下所示:“我不明白日志条目是如何包装的,以及额外的时间戳来自何处。您是否正在使用添加这些字段的logshipper?您可以展示一个创建此类条目的日志文件配置示例吗?@herm默认docker compose日志选项使用json文件记录器,除了日志字段外,还添加了几个字段:stream、time和attrs。filebeat将json日志包装到日志字段中,并添加时间戳和其他字段。那不是码头工人迪蒙