欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot項目使用MDC給日志增加唯一標識的實現(xiàn)步驟

 更新時間:2025年03月22日 13:59:08   作者:TOP灬小朋友  
本文介紹了如何在SpringBoot項目中使用MDC(Mapped?Diagnostic?Context)為日志增加唯一標識,以便于日志追蹤,通過創(chuàng)建日志攔截器、配置攔截器以及修改日志配置文件,可以實現(xiàn)這一功能,文章還提供了源碼地址,方便讀者學習和參考,感興趣的朋友一起看看吧

【JAVA】SpringBoot項目使用MDC給日志增加唯一標識,方便日志追蹤

1.日志效果

2.實現(xiàn)步驟

2.1.創(chuàng)建日志攔截器 LoggingInterceptor

@Component
public class LoggingInterceptor implements HandlerInterceptor {
    private static final String LOG_ID = "logId";
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String simpleUUID = IdUtil.simpleUUID();
        String logId =String.format("[logId:%s]", simpleUUID);
        MDC.put(LOG_ID, logId);
        return true;
    }
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        MDC.remove(LOG_ID);
    }
}

2.2.配置攔截器

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Resource
    private LoggingInterceptor loggingInterceptor;
    /**
     * 注冊攔截器
     *
     * @param registry 入?yún)?
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 注冊日志攔截器
        registry.addInterceptor(loggingInterceptor).addPathPatterns("/**");
    }
}

2.3.修改日志配置文件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 讀取application.yml中的日志配置 -->
    <springProperty scope="context" name="LOG_PATH" source="logging.file.path"/>
    <springProperty scope="context" name="LOG_NAME" source="logging.file.log-name"/>
    <springProperty scope="context" name="MAX_HISTORY" source="logging.file.days"/>
    <!-- 定義控制臺輸出格式 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{logId} %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 定義每天生成一個日志文件,并歸檔生成壓縮包 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>./${LOG_NAME}.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 每天生成一個日志文件 -->
            <fileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 最多保留指定天數(shù)的日志文件 -->
            <maxHistory>${MAX_HISTORY}</maxHistory>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{logId} %-5level %logger{50} - %msg%n</pattern>
        </encoder>
    </appender>
    <!-- 日志級別設置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>
</configuration>

3.源碼地址

https://gitee.com/xhs101/spring-boot-demo

到此這篇關于SpringBoot項目使用MDC給日志增加唯一標識的文章就介紹到這了,更多相關SpringBoot MDC日志增加唯一標識內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 在Spring中利用@Order注解對bean和依賴進行排序

    在Spring中利用@Order注解對bean和依賴進行排序

    在Spring框架中,@Order是一個經(jīng)常被忽視但非常重要的注解,在項目開發(fā)中,當我們需要維護bean的特定順序或者存在許多相同類型的bean時,這個注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對bean和依賴進行排序,需要的朋友可以參考下
    2023-11-11
  • idea搭建可運行Servlet的Web項目

    idea搭建可運行Servlet的Web項目

    在網(wǎng)上看到一篇很詳細的 intelliJ IDEA 創(chuàng)建web項目并簡單部署servlet的圖文教程,今天自己也配置一下,留個筆記,感興趣的可以了解一下
    2021-06-06
  • Spring-AOP 靜態(tài)正則表達式方法如何匹配切面

    Spring-AOP 靜態(tài)正則表達式方法如何匹配切面

    這篇文章主要介紹了Spring-AOP 靜態(tài)正則表達式方法如何匹配切面的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務

    Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務

    最近做項目遇到動態(tài)管理定時任務的需求,剛拿到這個需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務的相關知識,需要的朋友可以參考下
    2018-09-09
  • 探索Java I/O 模型的演進

    探索Java I/O 模型的演進

    什么是同步?什么是異步?阻塞和非阻塞又有什么區(qū)別?本文先從 Unix 的 I/O 模型講起,介紹了5種常見的 I/O 模型。而后再引出 Java 的 I/O 模型的演進過程,并用實例說明如何選擇合適的 Java I/O 模型來提高系統(tǒng)的并發(fā)量和可用性。,需要的朋友可以參考下
    2019-06-06
  • SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實現(xiàn)

    SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實現(xiàn)

    這篇文章主要介紹了SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-12-12
  • spring?cloud?gateway中netty線程池小優(yōu)化

    spring?cloud?gateway中netty線程池小優(yōu)化

    這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • 基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟

    基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟

    這篇文章主要給大家介紹了基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2022-02-02
  • Java詳細分析講解泛型

    Java詳細分析講解泛型

    在正式進入內容之前說明一下:泛型的內容太多,也太復雜。這里因為Java中寫數(shù)據(jù)結構的時候會使用到,所以加上。關于泛型我找了挺多文章,再結合自己的理解,盡可能將其講清楚。不求會使用泛型,只要求后面數(shù)據(jù)結構出現(xiàn)泛型的時候能夠知道是在干什么即可
    2022-05-05
  • Java19新特性虛擬線程的具體使用

    Java19新特性虛擬線程的具體使用

    Java 19 引入了虛擬線程,這是 JDK Project Loom 項目中的重要新特性,目的是簡化 Java 中的并發(fā)編程,并提高線程管理的效率和性能,下面就來具體介紹下
    2024-09-09

最新評論