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是一個經(jīng)常被忽視但非常重要的注解,在項目開發(fā)中,當我們需要維護bean的特定順序或者存在許多相同類型的bean時,這個注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對bean和依賴進行排序,需要的朋友可以參考下2023-11-11Spring-AOP 靜態(tài)正則表達式方法如何匹配切面
這篇文章主要介紹了Spring-AOP 靜態(tài)正則表達式方法如何匹配切面的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務
最近做項目遇到動態(tài)管理定時任務的需求,剛拿到這個需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務的相關知識,需要的朋友可以參考下2018-09-09SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實現(xiàn)
這篇文章主要介紹了SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12spring?cloud?gateway中netty線程池小優(yōu)化
這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟
這篇文章主要給大家介紹了基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-02-02