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

SpringBoot+slf4j實現(xiàn)全鏈路調(diào)用日志跟蹤的方法(一)

 更新時間:2021年05月13日 09:26:19   作者:kevin_ying  
本文重點給大家介紹Tracer集成的slf4j MDC功能,方便用戶在只簡單修改日志配置文件的前提下輸出當(dāng)前 Tracer 上下文 TraceId,文章通過代碼給大家講解了在springboot中使用的技巧,感興趣的朋友跟隨小編一起看看吧

SpringBoot中除了常見的分布式鏈路跟蹤系統(tǒng)zipkin、skywalking等,如果需要快速定位一次請求的所有日志,那么該如何實現(xiàn)?實際slf4j提供了MDC(Mapped Diagnostic Contexts)功能,支持用戶定義和修改日志的輸出格式以及內(nèi)容。本文將介紹 Tracer集成的slf4j MDC功能,方便用戶在只簡單修改日志配置文件的前提下輸出當(dāng)前 Tracer 上下文 TraceId。

MDC介紹

MDC(Mapped Diagnostic Context,映射調(diào)試上下文)是 log4j 、logback及l(fā)og4j2 提供的一種方便在多線程條件下記錄日志的功能。MDC 可以看成是一個與當(dāng)前線程綁定的哈希表,可以往其中添加鍵值對。MDC 中包含的內(nèi)容可以被同一線程中執(zhí)行的代碼所訪問。當(dāng)前線程的子線程會繼承其父線程中的 MDC 的內(nèi)容。當(dāng)需要記錄日志時,只需要從 MDC 中獲取所需的信息即可。MDC 的內(nèi)容則由程序在適當(dāng)?shù)臅r候保存進去。對于一個 Web 應(yīng)用來說,通常是在請求被處理的最開始保存這些數(shù)據(jù)。

springboot中如何使用

添加攔截器

public class LogInterceptor implements HandlerInterceptor {

	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		String tid = UUID.randomUUID().toString().replace("-", "");
		MDC.put(CloudConstant.MDC_TRACE, tid);
		return true;
	}

	@Override
	public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
			@Nullable Exception ex) throws Exception {
		MDC.remove(CloudConstant.MDC_TRACE);
	}

}

注冊攔截器

@Configuration
public class WebInterceptorAdapter implements WebMvcConfigurer {
	@Bean
	public LogInterceptor logInterceptor() {
		return new LogInterceptor();
	}

	@Override
	public void addInterceptors(InterceptorRegistry registry) {
		registry.addInterceptor(logInterceptor());
	}
}

修改日志輸出格式,添加%X{traceId},traceId和MDC中的鍵名稱一致

<pattern>%date %-5level ${PID:- } [%thread] [%X{tid}] : /*[%logger{50}:%line] %msg*/%n</pattern>

添加一個controller調(diào)用測試

@RestController
@RequestMapping("trace")
@Slf4j
public class TestTraceController {

    @GetMapping("traceLog")
    public String traceLog() {
        log.info("---接口調(diào)用了---");
        traceService();
        return "success";
    }

    private void traceService(){
        log.error("## 執(zhí)行traceService方法");
    }
}

日志打印如下,我們可以通過traceId快速查找出同一個請求的所有日志

細心的同學(xué)就會發(fā)現(xiàn),MDC還是存在一些問題

  • 在子線程中打印日志丟失traceId
  • HTTP調(diào)用丟失traceId

下一篇文章中小編繼續(xù)講解子線程中如何實現(xiàn)traceId的日志跟蹤

到此這篇關(guān)于SpringBoot+slf4j實現(xiàn)全鏈路調(diào)用日志跟蹤 一的文章就介紹到這了,更多相關(guān)SpringBoot全鏈路調(diào)用日志跟蹤內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信公眾號開發(fā)之回復(fù)圖文消息java代碼

    微信公眾號開發(fā)之回復(fù)圖文消息java代碼

    這篇文章主要為大家詳細介紹了微信公眾號開發(fā)之回復(fù)圖文消息java代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 在springboot中添加mvc功能的正確姿勢講解

    在springboot中添加mvc功能的正確姿勢講解

    這篇文章主要介紹了在springboot中添加mvc功能的正確姿勢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JAVA拋出異常的三種形式詳解

    JAVA拋出異常的三種形式詳解

    這篇文章主要介紹了JAVA拋出異常的三種形式詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • JAVA利用泛型返回類型不同的對象方法

    JAVA利用泛型返回類型不同的對象方法

    下面小編就為大家?guī)硪黄狫AVA利用泛型返回類型不同的對象方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • java調(diào)用webservice接口,并解析返回參數(shù)問題

    java調(diào)用webservice接口,并解析返回參數(shù)問題

    這篇文章主要介紹了java調(diào)用webservice接口,并解析返回參數(shù)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 關(guān)于Java的動態(tài)代理機制

    關(guān)于Java的動態(tài)代理機制

    這篇文章主要介紹了關(guān)于Java的動態(tài)代理機制,動態(tài)代理就是,在程序運行期,創(chuàng)建目標(biāo)對象的代理對象,并對目標(biāo)對象中的方法進行功能性增強的一種技術(shù),需要的朋友可以參考下
    2023-05-05
  • SpringBoot整合Caffeine使用示例

    SpringBoot整合Caffeine使用示例

    Spring Boot 和 Caffeine 可以很容易地進行整合,Caffeine 是一個現(xiàn)代化的 Java 緩存庫,提供了高性能和靈活的緩存策略,本文給大家介紹了SpringBoot整合Caffeine使用示例,需要的朋友可以參考下
    2024-07-07
  • Java對比兩個實體的差異分析

    Java對比兩個實體的差異分析

    這篇文章主要介紹了Java對比兩個實體的差異分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • java實現(xiàn)的RSA加密算法詳解

    java實現(xiàn)的RSA加密算法詳解

    這篇文章主要介紹了java實現(xiàn)的RSA加密算法,結(jié)合實例形式詳細分析了RSA加密解密的原理、java實現(xiàn)方法及相關(guān)注意事項,需要的朋友可以參考下
    2017-06-06
  • javaweb實現(xiàn)注冊登錄頁面

    javaweb實現(xiàn)注冊登錄頁面

    這篇文章主要為大家詳細介紹了javaweb實現(xiàn)注冊登錄頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論