spring boot 日志增加 Trace Id (异步、任务都能支持)
核心:重写 ConsoleAppender(若是使用其他Appender则重写它) 的 doAppend。
步骤:
1. 创建 TraceConsoleAppender 重写 ConsoleAppender 的 doAppend。
package com.hi.framework.logback; import ch.qos.logback.core.ConsoleAppender; import cn.hutool.core.lang.UUID; import org.slf4j.MDC; /** * @author joe */ public class TraceConsoleAppender<E> extends ConsoleAppender<E> { @Override public void doAppend(E eventObject) { if (MDC.get("traceId") == null){ MDC.put("traceId", UUID.fastUUID().toString(true)); } super.doAppend(eventObject); } }
2. 在 logback.xml 的 <appender> 中引用 TraceConsoleAppender ,并在 <pattern> 中增加 %X{traceId} 。
<configuration>
<!-- STDOUT:控制台输出 -->
<appender name="STDOUT" class="com.hi.framework.logback.TraceConsoleAppender">
<encoder>
<!-- 输出的格式-->
<pattern>%d{yyyy-MM-dd HH:mm:ss} %level [%thread] [traceId=%X{traceId}] %logger{36} %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="STDOUT" />
</root>
</configuration>
浙公网安备 33010602011771号