logstash 在回登录时未使用键值对

cvxl0en2  于 2022-12-09  发布在  Logstash
关注(0)|答案(1)|浏览(176)

我将logstash和logback与slf 4j一起使用,以便能够在控制台中打印结构化日志记录。我希望使用 KeyValuePairs 来存储具有键和值的值,“key”=“value”。我只是通过将函数用作Logger方法的第二个参数来传递值

final static Logger logger = LoggerFactory.getLogger(Main.class);

public static void main(String[] args) {
   logger.info("Test", StructuredArguments.kv("Key", "Value"));
}

在logback.xml文件中,我有以下配置:

<configuration>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    
    <encoder>
      <pattern>%d{HH:mm:ss.SSS} [%kvp{}] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <root level="debug">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

这应该足够打印我想要的内容了,一个日期,后面跟着keyValue事件,级别,logger和消息。但是当打印日志输出时,keyValue字段总是显示为空,不管我做什么。
我用过kvp{NONE},kvp{SINGLE},kvp{DOUBLE},等等。但是它似乎一直都不起作用。可以说我可以用“mdc”来代替,它可以和mdc一起工作,但是我也想尝试使用键值对,因为我想在mdc和kvp中有不同的信息。那么,问题是什么呢?我在网上搜索了很多,找不到有这个问题的人,而关于这个问题的信息看起来相当稀少。

bq8i3lrv

bq8i3lrv1#

不能在模式中使用%kvp。只需在代码中放置参数的StructuredArguments,如下所示:

logger.info("Test:{}", StructuredArguments.kv("Key", "Value"));

它将记录如下消息:* 测试:键=值 *

相关问题