这几天发现对接到splunk的Logback日志class字段输出的有一定概率会出现问号。
配置如下:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>LOCAL_SYSTEM_TIME=[%d{yyyy-MM-dd HH:mm:ss.SSS}],THREAD=[%thread],LOG_LEVEL=[%-5level],CLASS=[%class{35}.%M:%L],%m%n</pattern>
</encoder>
</appender>
原因分析
输出文件以及行号信息需要 stacktrace 获取 callerdata,因为性能原因 logback 的 AsyncAppender 默认是不记录该信息。
解决方法
增加如下配置在appender中
<includeCallerData>true</includeCallerData>
修改后如下:
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>LOCAL_SYSTEM_TIME=[%d{yyyy-MM-dd HH:mm:ss.SSS}],THREAD=[%thread],LOG_LEVEL=[%-5level],CLASS=[%class{35}.%M:%L],%m%n</pattern>
</encoder>
<includeCallerData>true</includeCallerData>
</appender>
官方文档 https://logback.qos.ch/manual/appenders.html#AsyncAppender:
网友评论