SpringBoot項目使用MDC給日志增加唯一標識的實現(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>
<!-- 日志級別設(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項目使用MDC給日志增加唯一標識的文章就介紹到這了,更多相關(guān)SpringBoot MDC日志增加唯一標識內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Spring中利用@Order注解對bean和依賴進行排序
在Spring框架中,@Order是一個經(jīng)常被忽視但非常重要的注解,在項目開發(fā)中,當我們需要維護bean的特定順序或者存在許多相同類型的bean時,這個注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對bean和依賴進行排序,需要的朋友可以參考下2023-11-11
Spring-AOP 靜態(tài)正則表達式方法如何匹配切面
這篇文章主要介紹了Spring-AOP 靜態(tài)正則表達式方法如何匹配切面的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07
Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務(wù)
最近做項目遇到動態(tài)管理定時任務(wù)的需求,剛拿到這個需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實現(xiàn)動態(tài)管理定時任務(wù)的相關(guān)知識,需要的朋友可以參考下2018-09-09
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)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟
這篇文章主要給大家介紹了基于Java語言在窗體上實現(xiàn)飛機大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2022-02-02

