最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot添加日志鏈TraceId方式

 更新時(shí)間:2025年08月15日 09:41:40   作者:yooxinz  
配置SpringBoot日志TraceId,利用MDC和攔截器注入traceid變量,通過(guò)logback-spring.xml設(shè)置,使%X{traceid}可獲取,提升問(wèn)題排查效率

配置Spring Boot 日志的 TraceId,提高問(wèn)題排查的效率。

通過(guò)MDC添加TraceId變量

創(chuàng)建攔截器 添加traceId

@Component
@Slf4j
public class TraceFilter extends OncePerRequestFilter {

    @Override
    protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {
        // "traceId"
        MDC.put("traceid", getTraceId());
        filterChain.doFilter(httpServletRequest, httpServletResponse);
    }

    private String getTraceId() {
        long timestamp = System.currentTimeMillis();
        UUID uuid = UUID.randomUUID();
        String uniqueId = timestamp + uuid.toString().replace("-", "");
        return uniqueId;
    }
}

配置日志文件

application配置日志配置文件:

logging:
  config: classpath:logback-spring.xml

logback-spring.xml文件: 通過(guò) %X{traceid} 獲取filter中配置的變量

<?xml version="1.0" encoding="UTF-8"?>

<!-- 從高到地低 OFF 、 FATAL 、 ERROR 、 WARN 、 INFO 、 DEBUG 、 TRACE 、 ALL -->
<!-- 日志輸出規(guī)則 根據(jù)當(dāng)前ROOT 級(jí)別,日志輸出時(shí),級(jí)別高于root默認(rèn)的級(jí)別時(shí) 會(huì)輸出 -->
<!-- 以下 每個(gè)配置的 filter 是過(guò)濾掉輸出文件里面,會(huì)出現(xiàn)高級(jí)別文件,依然出現(xiàn)低級(jí)別的日志信息,通過(guò)filter 過(guò)濾只記錄本級(jí)別的日志 -->


<!-- 屬性描述 scan:性設(shè)置為true時(shí),配置文件如果發(fā)生改變,將會(huì)被重新加載,默認(rèn)值為true scanPeriod:設(shè)置監(jiān)測(cè)配置文件是否有修改的時(shí)間間隔,如果沒(méi)有給出時(shí)間單位,默認(rèn)單位是毫秒。當(dāng)scan為true時(shí),此屬性生效。默認(rèn)的時(shí)間間隔為1分鐘。
	debug:當(dāng)此屬性設(shè)置為true時(shí),將打印出logback內(nèi)部日志信息,實(shí)時(shí)查看logback運(yùn)行狀態(tài)。默認(rèn)值為false。 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <contextName>d1money-web-ys-ems</contextName>

    <!-- 日志最大的歷史 30天 -->
    <property name="maxHistory" value="30" />
    <property name="maxFileSize" value="100MB" />


    <!-- ConsoleAppender 控制臺(tái)輸出日志 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- Minimum logging level to be presented in the console logs -->
            <level>INFO</level>
        </filter>
        <!-- 對(duì)日志進(jìn)行格式化 -->
        <encoder>
            <pattern>
                %date{yyyy-MM-dd HH:mm:ss} | %X{traceid} | %highlight(%5p) | %green(%thread) | %boldMagenta(%logger) | %msg%n
            </pattern>
        </encoder>
    </appender>

    <!-- INFO級(jí)別日志 -->
    <!-- 滾動(dòng)記錄文件,先將日志記錄到指定文件,當(dāng)符合某個(gè)條件時(shí),將日志記錄到其他文件 RollingFileAppender -->
    <appender name="FILE"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <!-- Minimum logging level to be presented in the console logs -->
            <level>INFO</level>
        </filter>
        <!-- 最常用的滾動(dòng)策略,它根據(jù)時(shí)間來(lái)制定滾動(dòng)策略.既負(fù)責(zé)滾動(dòng)也負(fù)責(zé)出發(fā)滾動(dòng) -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志輸出位置 可相對(duì)、和絕對(duì)路徑 -->
            <fileNamePattern>
                log/app.%d{yyyy-MM-dd}.%i.log
            </fileNamePattern>
            <!-- 可選節(jié)點(diǎn),控制保留的歸檔文件的最大數(shù)量,超出數(shù)量就刪除舊文件假設(shè)設(shè)置每個(gè)月滾動(dòng),且<maxHistory>是6, 則只保存最近6個(gè)月的文件,刪除之前的舊文件。注意,刪除舊文件是,那些為了歸檔而創(chuàng)建的目錄也會(huì)被刪除 -->
            <maxHistory>${maxHistory}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${maxFileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>

        </rollingPolicy>


        <!-- 按照固定窗口模式生成日志文件,當(dāng)文件大于20MB時(shí),生成新的日志文件。窗口大小是1到3,當(dāng)保存了3個(gè)歸檔文件后,將覆蓋最早的日志。
            <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
            <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern> <minIndex>1</minIndex>
            <maxIndex>3</maxIndex> </rollingPolicy> -->
        <!-- 查看當(dāng)前活動(dòng)文件的大小,如果超過(guò)指定大小會(huì)告知RollingFileAppender 觸發(fā)當(dāng)前活動(dòng)文件滾動(dòng) <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <maxFileSize>5MB</maxFileSize>
            </triggeringPolicy> -->

        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
        </encoder>
    </appender>

    <logger name="java.sql.PreparedStatement" value="DEBUG" />
    <logger name="java.sql.Connection" value="DEBUG" />
    <logger name="java.sql.Statement" value="DEBUG" />
    <logger name="com.ibatis" value="DEBUG" />
    <logger name="com.ibatis.common.jdbc.SimpleDataSource" value="DEBUG" />
    <logger name="com.ibatis.common.jdbc.ScriptRunner" level="DEBUG" />
    <logger name="com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate"
            value="DEBUG" />
    <logger name="com.apache.ibatis" level="TRACE" />

    <!-- root級(jí)別 INFO -->
    <root level="info">
        <!-- 文件輸出 -->
        <appender-ref ref="FILE" />
        <!-- 控制臺(tái)輸出 -->
        <appender-ref ref="STDOUT" />
    </root>
</configuration>

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

山西省| 全州县| 土默特右旗| 淮北市| 高青县| 贵阳市| 德阳市| 浠水县| 驻马店市| 商河县| 靖安县| 绥芬河市| 呼和浩特市| 沁源县| 元谋县| 常德市| 调兵山市| 华池县| 宁明县| 福建省| 娱乐| 兴业县| 辽阳县| 汕尾市| 河间市| 竹山县| 秀山| 肇庆市| 新闻| 金寨县| 勐海县| 镶黄旗| 莱芜市| 德格县| 东乌珠穆沁旗| 金塔县| 大余县| 汉中市| 北辰区| 林周县| 富蕴县|