在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    spring為每個請求增加traceId

    前言

    spring開發(fā)web項目經(jīng)常會查看日志,通常都是根據(jù)每個http請求來查詢整個鏈路的日志。

    有時這些請求的參數(shù)都差不多,日志也很相似,很難分辨出是否同一鏈路的請求。

    有時我會根據(jù)線程id來查詢,但是tomcat的線程是復用的,同一個線程id對應多個請求鏈路日志,為此還是想辦法為每個請求分配一個鏈路id。

    原理

    • 標記:logback 在 SLF4J API 利用診斷上下文映射 (MDC)為每個請求打上唯一標記。例如:標記為traceId。
    • 使用標記:logback的pattern使用 %X{traceId}。
    • 打標記時機:HandlerInterceptor的preHandle方法
    • 清除標記:HandlerInterceptor的afterCompletion方法

    實踐

    • 打標記/清除標記

    1、打標記【preHandle方法】filter類:*InterceptorString traceId = getTraceId(request);MDC.put(“traceId”, traceId);private String getTraceId(HttpServletRequest request){ return String.format(“%s – %s”,request.getRequestURI(), UUID.randomUUID());}備注:filter需注入@BeanWebMvcConfigurer createWebMvcConfigurer(@Autowired HandlerInterceptor[] interceptors) { return new WebMvcConfigurer() { public void addInterceptors(InterceptorRegistry registry) { for (HandlerInterceptor interceptor : interceptors) { registry.addInterceptor(interceptor); } } };}2、清除標記【afterCompletion方法】MDC.clear();

    • logback【見上一篇logback文章】

    ./log/${LOG_FILE}.log ./log/${LOG_FILE}.%d{yyyy-MM-dd}.gz 30 100MB %d{yyyy-MM-dd HH:mm:ss.SSS} [%X{traceId}] [%thread] %-5level %logger{50} %L – %msg%n %d{yyyy-MM-dd HH:mm:ss.SSS} [%X{traceId}] [%thread] %-5level %logger{50} %L – %msg%n 備注:%X{traceId} : 標記的使用和輸出。

    資料

    https://logbackcn.gitbook.io/logback/08-di-ba-zhang-mdc【強烈推薦logback詳解

    https://zhuanlan.zhihu.com/p/61395047

    https://www.cnblogs.com/cjsblog/p/11831046.html

    https://logback.qos.ch/manual/mdc.html

    其實啊,logback 的中文手冊一篇足以,都來自于它的變體或?qū)嵺`。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年7月31日 10:55
    下一篇 2022年7月31日 10:55

    相關推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息