Docker将JSON日志解释为字符串

时间:2017-05-24 08:17:53

标签: 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\": \"Something happened\", \"level\": \"DEBUG\"}\"",
  "timestamp": "<the time>",
  ...more fields...
}

但我们不希望将日志字段作为字符串进行转义,我们希望它在同一级别嵌入为JSON:

{
  "log": {
     "time": "2017-06-01 14:00:00", 
     "message": "Something happened", 
     "level": "DEBUG"
  },
  "timestamp": "<the time>",
  ...more fields...
}

这可以实现吗?

1 个答案:

答案 0 :(得分:0)

看起来无法做到这一点。但是我可以将JSON字符串转换为Filebeat中的实际JSON,我们将其用于将日志传递给Kibana和Elastalert。为此,我使用了decode_json_fieldsprocessors下的filebeat.yml选项。