SpringBoot項(xiàng)目使用MDC給日志增加唯一標(biāo)識(shí)的實(shí)現(xiàn)步驟
【JAVA】SpringBoot項(xiàng)目使用MDC給日志增加唯一標(biāo)識(shí),方便日志追蹤
1.日志效果

2.實(shí)現(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;
/**
* 注冊(cè)攔截器
*
* @param registry 入?yún)?
*/
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注冊(cè)日志攔截器
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"/>
<!-- 定義控制臺(tái)輸出格式 -->
<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>
<!-- 定義每天生成一個(gè)日志文件,并歸檔生成壓縮包 -->
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>./${LOG_NAME}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天生成一個(gè)日志文件 -->
<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>
<!-- 日志級(jí)別設(shè)置 -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
</configuration>3.源碼地址
https://gitee.com/xhs101/spring-boot-demo
到此這篇關(guān)于SpringBoot項(xiàng)目使用MDC給日志增加唯一標(biāo)識(shí)的文章就介紹到這了,更多相關(guān)SpringBoot MDC日志增加唯一標(biāo)識(shí)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter)
本文主要介紹了Spring Security6配置方法(廢棄WebSecurityConfigurerAdapter),就像文章標(biāo)題所說的,SpringSecurity已經(jīng)廢棄了繼承WebSecurityConfigurerAdapter的配置方式,下面就來詳細(xì)的介紹一下,感興趣的可以了解一下2023-12-12
Spring?注入集合實(shí)現(xiàn)過程示例詳解
這篇文章主要為大家介紹了Spring?注入集合實(shí)現(xiàn)過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09
Java使用Apache POI和EasyExcel讀取Excel文件的實(shí)現(xiàn)方案
Java 讀取 Excel 文件核心依賴 Apache POI(兼容 .xls(Excel 97-2003)和 .xlsx(Excel 2007+))或 EasyExcel(阿里開源,低內(nèi)存、高性能),以下是兩種主流方案的完整實(shí)現(xiàn),需要的朋友可以參考下2025-12-12
java Arrays.asList 返回什么與普通 ArrayList 區(qū)別介
Arrays.asList()返回一個(gè)固定大小的List視圖,而不是java.util.ArrayList,它不支持add和remove操作,但支持set操作,本文介紹java Arrays.asList返回什么與普通 ArrayList區(qū)別,感興趣的朋友跟隨小編一起看看吧2026-01-01

