午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:184日期:2023-03-11 13:47:38

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

MDC介紹

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

springboot中如何使用

添加攔截器

public class LogInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {String tid = UUID.randomUUID().toString().replace('-', '');MDC.put(CloudConstant.MDC_TRACE, tid);return true;}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,@Nullable Exception ex) throws Exception {MDC.remove(CloudConstant.MDC_TRACE);}}

注冊攔截器

@Configurationpublic class WebInterceptorAdapter implements WebMvcConfigurer {@Beanpublic LogInterceptor logInterceptor() {return new LogInterceptor();}@Overridepublic 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')@Slf4jpublic class TestTraceController { @GetMapping('traceLog') public String traceLog() {log.info('---接口調(diào)用了---');traceService();return 'success'; } private void traceService(){log.error('## 執(zhí)行traceService方法'); }}

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

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

細心的同學(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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 欧美大喷水吹潮合集在线观看 | 在线视频日韩精品 | 亚洲永久av | av在线精品 | 国产黄网在线观看 | 中文字幕在线观看一区 | 亚洲资源网站 | 99热这里只有精品5 日本全黄裸体片 | 影音先锋成人 | 男人在线观看视频 | 久久人精品 | 午夜在线一区二区 | 亚洲色图校园春色 | 亚洲色图视频在线观看 | 97中文在线 | 亚洲国产精品尤物yw在线观看 | 亚洲性猛交 | 超碰狠狠干 | 欧美日韩高清一区二区三区 | 狠狠的色 | www日本视频 | 亚洲欧美影院 | 激情无遮挡 | 男人久久 | 性一交一乱一精一晶 | 国产午夜激情 | 国产欧美精品区一区二区三区 | 日韩视频在线一区二区 | 四虎影视精品 | 午夜黄色网 | 亚洲免费资源 | 激情久久久久久久 | 免费在线观看黄 | 午夜精品在线视频 | 成年人视频网 | 欧美国产精品一区 | 一区二区三区视频免费看 | 91禁男男在线观看 | 女人日批视频 | 黄色片高清 | 一本到av|