spring为每个请求增加traceId

前言

spring开发web项目经常会查看日志,通常都是根据每个http请求来查询整个链路的日志。

有时这些请求的参数都差不多,日志也很相似,很难分辨出是否同一链路的请求。

有时我会根据线程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 的中文手册一篇足以,都来自于它的变体或实践。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
用户投稿
上一篇 2022年7月31日 10:55
下一篇 2022年7月31日 10:55

相关推荐

  • 分享4条发微商朋友圈的方法(微商朋友圈应该怎么发)

    对于微商朋友来说,朋友圈的重要性不言而喻了。 那么微商的朋友圈到底该怎么发呢? 为什么同样是经营一个朋友圈,有的微商看起来逼格满满,实际效果也不错;而有的却动都不动就被屏蔽甚至拉黑…

    2022年11月27日
  • 《宝可梦朱紫》梦特性怎么获得?隐藏特性获取方法推荐

    宝可梦朱紫里有很多宝可梦都是拥有梦特性会变强的宝可梦,很多玩家不知道梦特性怎么获得,下面就给大家带来宝可梦朱紫隐藏特性获取方法推荐,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 …

    2022年11月25日
  • 《宝可梦朱紫》奇鲁莉安怎么进化?奇鲁莉安进化方法分享

    宝可梦朱紫中的奇鲁莉安要怎么进化呢?很多玩家都不知道,下面就给大家带来宝可梦朱紫奇鲁莉安进化方法分享,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 奇鲁莉安进化方法分享 奇鲁莉安…

    2022年11月25日
  • 世界杯海外直播在哪看(中国女篮世界杯直播)

    最近一段时间最火爆的话题就是世界杯了,大家都想第一时间观看直播比赛,一些海外小伙伴在问世界杯海外直播在哪看?2022年世界杯海外直播免费观看平台有哪些?下面小编为大家带来世界杯海外…

    2022年11月25日
  • cpu性能天梯图2022 AMD CPU天梯图最新排行榜出炉

    用户在DIY自己的主机时选择CPU是非常关键的,CPU可以说是电脑的大脑,大家也都想追求好一点的CPU来使用,但型号太多了,大部分的用户都不知道目前哪一款CPU比较好用,快来看看详…

    2022年11月24日
  • 《宝可梦朱紫》暴飞龙怎么抓?暴飞龙获得方法

    宝可梦朱紫暴飞龙位置在哪?在游戏中,很多玩家还不清楚暴飞龙具体要怎么样获得,其实获得方法很简单,暴飞龙直接是没得抓的,需要玩家从宝贝龙进化得到,下面一起来看一下宝可梦朱紫暴飞龙获得…

    2022年11月23日
  • 《宝可梦朱紫》布土拨怎么进化?布土拨进化方法介绍

    宝可梦朱紫中,不同的宝可梦有不同的进化方法,其中布土拨的进化方法是比较特殊的。很多玩家不知道宝可梦朱紫布土拨怎么进化,下面就带来宝可梦朱紫布土拨进化方法介绍,一起来看看吧,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》薄荷怎么获得?薄荷获得方法

    宝可梦朱紫中薄荷有改变宝可梦的属性或性格等效果,很多玩家想知道宝可梦朱紫薄荷怎么获得,下面就带来宝可梦朱紫薄荷获得方法,感兴趣的小伙伴一起来看看吧,希望能帮助到大家。 薄荷获得方法…

    2022年11月23日
  • 《宝可梦朱紫》怎么交换精灵?交换精灵方法一览

    宝可梦朱紫中玩家可以和好友或者npc进行交换宝可梦获得自己没有的宝可梦,很多玩家想知道宝可梦朱紫怎么交换精灵,下面就带来宝可梦朱紫交换精灵方法一览,感兴趣的小伙伴不要错过,希望能帮…

    2022年11月23日
  • 《宝可梦朱紫》龙爪技能怎么获得?龙爪技能获取方法

    宝可梦朱紫龙爪技能怎么获得?在游戏中,很多玩家还不清楚龙爪技能应该怎么获取,其实获取方法有很多,下面一起来看一下宝可梦朱紫龙爪技能获取方法,希望可以帮助各位玩家顺利的进行游戏内容。…

    2022年11月23日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息