Docker日志将JSON日志解释为string

我们的Go服务器以JSON的forms输出日志到stdout,每一行看起来像下面这样:

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

我们的docker-compose使用标准的json-filelogging器,它将每行logging在一个log字段中作为一个转义string,如下所示:

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

但是我们不希望将日志字段作为string转义,我们希望将其作为JSONembedded到同一级别:

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

这可以实现吗?

看起来这是不能做的。 但是我可以将JSONstring转换为Filebeat中的实际JSON,我们正在使用它将日志传递给Kibana和Elastalert。 为此,我使用decode_json_fields processors下的decode_json_fields选项。