在JVM项目中,我们使用logstash在生产服务器上记录包含附加JSON数据的消息。
问题是JSON很难在控制台中读取,所以我尝试更改为本地(dev)配置以使用PatternLayoutEncoder,并在本地有良好的、干净的日志。
我发现这个问题:https://github.com/logstash/logstash-logback-encoder/issues/136
结论是,使用logstashlogbackencoder5.0,我们现在可以用结构化参数统一键/值对。
我这样做了,效果很好,但我遇到的问题是,现在在logstash上,这些对在消息和JSON中都重复。
- 对于控制台,我使用
ch.qos.logback.classic.encoder.PatternLayoutEncoder
- 对于JSON,我使用
net.logstash.logback.encoder.LogstashEncoder
要么我这么做
LOGGER.info("Some message", kv("user_id", 1));
logstash json如下所示:
{ message: "Some message", user_id: 1 }
但是控制台日志没有参数:
2018-04-10 08:38:38,042 INFO - Some message
否则我就这么做
LOGGER.info("Some message {}", kv("user_id", 1));
logstash json有重复的信息(不好):
{ message: "Some message user_id=1", user_id: 1 }
而控制台日志正是我所需要的:
2018-04-10 08:38:38,042 INFO - Some message user_id=1
"所以我的问题是"
我如何配置我的日志,以便以一种干净的方式在控制台中获得额外的信息,而不是在JSON中复制它们?
1条答案
按热度按时间qyyhg6bp1#
参数数组转换器:
}
本地回登录配置:
回登录配置其他环境:
本地输出:
输出其他环境: