logback:合并控制台和logstash json

时间:2018-04-10 11:34:22

标签: logging logstash logback logstash-logback-encoder

在JVM项目中,我们使用logstash在生产服务器上记录带有其他JSON数据的消息。

问题是JSON很难在控制台中读取。因此,我尝试更改为本地(dev)配置以使用PatternLayoutEncoder并在本地拥有漂亮,干净的日志。

我发现了这个问题: https://github.com/logstash/logstash-logback-encoder/issues/136

结论是,使用logstash logback encoder 5.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中重复这些信息?

0 个答案:

没有答案