利用logback的MDC进行扩展
MDC类:
package org.slf4j;
public class MDC {
// 将上下文的值作为 MDC 的 key 放到线程上下的 map 中
public static void put(String key, String val);
// 通过 key 获取上下文标识
public static String get(String key);
// 通过 key 移除上下文标识
public static void remove(String key);
// 清除 MDC 中所有的 entry
public static void clear();
}
目的:
在elk系统中,Kibana作展示的时候,要实现右侧的字段定制化。
调用
MDC.put(key, val);
在logback的配置文件中添加对应的参数,通过%X{key}插入。
<!-- 为logstash输出的JSON格式的Appender -->
<appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>127.0.0.1:5044</destination>
<!-- 日志输出编码 -->
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<timeZone>UTC</timeZone>
</timestamp>
<pattern>
<pattern>
{
"severity": "%level",
"service": "${springAppName:-}",
"trace": "%X{X-B3-TraceId:-}",
"span": "%X{X-B3-SpanId:-}",
"exportable": "%X{X-Span-Export:-}",
"pid": "${PID:-}",
"thread": "%thread",
"class": "%logger{40}",
"rest": "%message",
"key": "%X{key}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
来自blog.koreyoshi.work