logback-MDC
相當於自定義日志格式輸出
寫在過濾器中
示例:
try {
Context context = createContext(request, response);
processSysNo(request, response, context);
processSeqNo(request, response, context);
processTraceId(request, response, context);
MDC.put("systemName",context.getSysNo());
if (!StringUtils.isEmpty(context.getReqSeqNo())){
MDC.put("serialNum",context.getReqSeqNo());
}else {
MDC.put("serialNum",context.getSeqNo());
}
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
// 進程
MDC.put("process",runtimeMXBean.getName());
log.debug(context.toString());
chain.doFilter(request, response);
} finally {
removeContext(request, response);
// 避免線程泄漏
MDC.clear();
}
在logback.xml中配置引入
%X{process}
%X{systemName}
[時間戳] | 日志級別 | 所屬系統或子系統 | traceId | spanId | 全局流水號 | 進程號 | 線程號 | 源碼文件名:行號 | 日志內容
<pattern>[%d{yyyy-MM-dd HH:mm:ss}] | %-5level | %X{systemName} | %X{X-B3-TraceId:-} | %X{X-B3-SpanId:-} | %X{serialNum} | %X{process} | %thread | %class:%line | %msg%n</pattern>