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>

 

posted on 2025-07-30 11:47  Joequa  阅读(54)  评论(0)    收藏  举报