我将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中有不同的信息。那么,问题是什么呢?我在网上搜索了很多,找不到有这个问题的人,而关于这个问题的信息看起来相当稀少。
1条答案
按热度按时间bq8i3lrv1#
不能在模式中使用
%kvp
。只需在代码中放置参数的StructuredArguments,如下所示:它将记录如下消息:* 测试:键=值 *