SpringBoot項(xiàng)目使用MDC給日志增加唯一標(biāo)識的實(shí)現(xiàn)步驟
【JAVA】SpringBoot項(xiàng)目使用MDC給日志增加唯一標(biāo)識,方便日志追蹤
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;
/**
* 注冊攔截器
*
* @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>
<!-- 定義每天生成一個(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>
<!-- 日志級別設(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)識的文章就介紹到這了,更多相關(guān)SpringBoot MDC日志增加唯一標(biāo)識內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Spring中利用@Order注解對bean和依賴進(jìn)行排序
在Spring框架中,@Order是一個(gè)經(jīng)常被忽視但非常重要的注解,在項(xiàng)目開發(fā)中,當(dāng)我們需要維護(hù)bean的特定順序或者存在許多相同類型的bean時(shí),這個(gè)注解就發(fā)揮了作用,這篇文章講的就是如何利用@Order注解對bean和依賴進(jìn)行排序,需要的朋友可以參考下2023-11-11
idea搭建可運(yùn)行Servlet的Web項(xiàng)目
在網(wǎng)上看到一篇很詳細(xì)的 intelliJ IDEA 創(chuàng)建web項(xiàng)目并簡單部署servlet的圖文教程,今天自己也配置一下,留個(gè)筆記,感興趣的可以了解一下2021-06-06
Spring-AOP 靜態(tài)正則表達(dá)式方法如何匹配切面
這篇文章主要介紹了Spring-AOP 靜態(tài)正則表達(dá)式方法如何匹配切面的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Quartz+Spring Boot實(shí)現(xiàn)動態(tài)管理定時(shí)任務(wù)
最近做項(xiàng)目遇到動態(tài)管理定時(shí)任務(wù)的需求,剛拿到這個(gè)需求還真不知道從哪下手,經(jīng)過一番思考,終于找出實(shí)現(xiàn)思路,接下來通過本文給大家介紹了Quartz+Spring Boot實(shí)現(xiàn)動態(tài)管理定時(shí)任務(wù)的相關(guān)知識,需要的朋友可以參考下2018-09-09
SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot中的五種對靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
spring?cloud?gateway中netty線程池小優(yōu)化
這篇文章主要介紹了spring?cloud?gateway中netty線程池小優(yōu)化技巧示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
基于Java語言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟
這篇文章主要給大家介紹了基于Java語言在窗體上實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲的完整步驟,文中通過圖文以及實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-02-02

