SpringBoot使用TraceId日志链路追踪

news/2025/10/20 15:47:46/文章来源:https://www.cnblogs.com/maNongXiaoZhou/p/19152249
  • 业务需求

  保证一次服务调用,在业务中可以一次追查到本次服务调用涉及的本地服务方法,第三方服务接口。实现日志的链路追踪。保证日志的高查找性。

  • 实现步骤

  1、pom.xml 依赖

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></dependency><!--lombok配置--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.10</version></dependency>
</dependencies>

2、整合logback,打印日志,logback.xml (日志配置文件)

关键代码:[traceId:%X{traceId}],traceId是通过拦截器里MDC.put(traceId, tid)添加。

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--日志存储路径--><property name="log" value="D:/test/log" /><!-- 控制台输出 --><appender name="console" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--输出格式化--><pattern>[traceId:%X{traceId}]  %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!-- 按天生成日志文件 --><appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件名--><FileNamePattern>${log}/%d{yyyy-MM-dd}.log</FileNamePattern><!--保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>[traceId:%X{traceId}]  %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder><!--日志文件最大的大小--><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><!-- 日志输出级别 --><root level="INFO"><appender-ref ref="console" /><appender-ref ref="file" /></root>
</configuration>

3、application.yml指定logback.xml配置目录

logging:config: classpath:logback.xml

4、异步线程的跟踪ID链路追踪

业务逻辑是基于线程数据的传递进行处理,主线程传递线程ID到子线程。处理方式:重写线程池的execute(*)、submit(*)方法。

public final class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {public MyThreadPoolTaskExecutor() {super();}@Overridepublic void execute(Runnable task) {super.execute(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));}@Overridepublic <T> Future<T> submit(Callable<T> task) {return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));}@Overridepublic Future<?> submit(Runnable task) {return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));}
}

4、异步定时任务线程接口ScheduledExecutorService的日志链路追踪。在执行前,执行后进行跟踪ID的生成和删除。

 @Bean(name = "scheduledExecutorService")protected ScheduledExecutorService scheduledExecutorService() {return new ScheduledThreadPoolExecutor(corePoolSize,new BasicThreadFactory.Builder().namingPattern("schedule-pool-%d").daemon(true).build(),new ThreadPoolExecutor.CallerRunsPolicy()) {@Overrideprotected void beforeExecute(Thread thread, Runnable runnable) {super.beforeExecute(thread, runnable);// 为定时任务生成一个 traceId
                TraceIdUtil.setTraceId();// 可选:添加任务标识System.out.println("Scheduled task starting with traceId: " + TraceIdUtil.getTraceId());}@Overrideprotected void afterExecute(Runnable r, Throwable t) {super.afterExecute(r, t);Threads.printException(r, t);TraceIdUtil.remove();}};}

注:萌新一枚,该博客用于记录所学知识,如有不对的地方,请及时指教,谢谢各位。

2025-10-20 15:46:36

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

马尔可夫决策过程的理解

核心性质:马尔可夫性:一个随机过程在给定现在状态和所有历史状态的情况下,其未来状态的条件概率分布仅依赖于当前状态。即未来的转移和过去是独立的,只取决于现在。马尔可夫决策过程 是顺序决策问题的数学模型,用…

2025年试验机厂家权威推荐榜单:拉力试验机,江都试验机,管材环刚度试验机,电子万能试验机,橡胶试验机,压缩试验机及静刚度试验机精选

2025年试验机厂家权威推荐榜单:拉力试验机,江都试验机,管材环刚度试验机,电子万能试验机,橡胶试验机,压缩试验机及静刚度试验机精选 在材料科学与工业制造领域,试验机作为质量控制与研发创新的关键设备,其性能…

2025 年球墨铸铁管厂家最新推荐榜:涵盖 K9/C 级供水等多规格,优质厂家选购指南 k9级球墨铸铁管/c25级球墨铸铁管/c30球墨铸铁管/c级球墨铸铁管厂家推荐

引言 在城市给排水、跨区域输水等重大基础设施建设中,球墨铸铁管的质量直接关系到工程安全与使用寿命。当前市场品牌繁杂,既有技术领先的老牌企业,也有快速崛起的新兴力量,部分产品存在壁厚不均、防腐性能不达标等…

Cypress 插件实战:让你的测试不再“偶尔掉链子”

关注 霍格沃兹测试学院公众号,回复「资料」, 领取人工智能测试开发技术合集 对于测试开发来说,最头疼的莫过于 flaky tests——同一条测试,有时候过,有时候失败,还没规律。今天我们就聊聊如何用 自定义 Cypress 插…

2025年掘进机/综掘机厂家权威推荐榜:专业制造与技术实力深度解析,高效掘进设备优选指南

2025年掘进机/综掘机厂家权威推荐榜:专业制造与技术实力深度解析,高效掘进设备优选指南 在矿山开采和隧道工程建设领域,掘进机和综掘机作为核心装备,其性能与可靠性直接影响工程效率与安全。随着技术进步和市场需求…

洛谷P2474 [SCOI2008] 天平 题解

思路学习的这一篇 step1 首先我们设 \(mn_{i,j}\)为砝码 \(i\) -砝码 \(j\) 的最小值(下文以\(a_i\)和\(a_j\)代替)。 \(mx_{i,j}\)为\(a_i-a_j\)的最大值。 当设\(a_i\)和\(a_j\)的关系为\(g_{i,j}\)。 当\(g_{i,j}\)…

Telnet发送邮件

Telnet发送邮件Telnet mail.yy.com 25EHLO domain.com MAIL FROM:<your-email@example.com> RCPT TO:<recipient@example.com>DATA #开始输入邮件主题和正文 Subject: Test EmailThis is a test email. .…

一天一款实用的AI工具,第8期,AI转素描风格

一键将图片转成手绘素描的效果,呈现线条勾勒的艺术质感。工具介绍 在这个充满色彩的世界里,我们有时需要褪去喧嚣,用最本质的线条,讲述最深的故事。 无需画板与铅笔,也不必掌握绘画技巧,【AI转素描风格】工具能够…

2025年预应力张拉设备厂家推荐排行榜,千斤顶,预应力千斤顶,预应力张拉千斤顶,预应力张拉机,锚具,预应力锚具,桥梁施工锚具公司精选

2025年预应力张拉设备厂家推荐排行榜,千斤顶,预应力千斤顶,预应力张拉千斤顶,预应力张拉机,锚具,预应力锚具,桥梁施工锚具公司精选 行业背景与发展趋势 预应力张拉技术作为现代工程建设中的核心技术之一,在桥梁…

完整教程:【C++】string类

完整教程:【C++】string类pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

2025年农机带厂家权威推荐榜:旋耕机带、收割机带、拖拉机带,耐磨耐用传动带源头厂家精选

2025年农机带厂家权威推荐榜:旋耕机带、收割机带、拖拉机带,耐磨耐用传动带源头厂家精选 随着农业机械化水平的持续提升,农机传动带作为关键零部件,其性能直接影响农业机械的工作效率和可靠性。在旋耕、收割、耕作…

2025年实验室/手术室净化工程厂家推荐排行榜:涵盖无尘车间装修、洁净室建设、医院净化工程等全方位解决方案精选

2025年实验室/手术室净化工程厂家推荐排行榜:涵盖无尘车间装修、洁净室建设、医院净化工程等全方位解决方案精选 在当今科技飞速发展的时代,实验室净化、手术室净化、无尘车间建设等洁净环境工程已成为医疗健康、生物…

2025 石家庄全屋定制工厂推荐:河北森佰特木业,莫兰迪色系/工业风/意式/意式极简/中古风/侘寂风/现代简约/北欧风/奶油胡桃色全屋定制等风格任你选

随着居民生活品质提升、家居审美多元化及个性化居住需求增加,全屋定制已从高端家居消费选择逐步普及至普通家庭,覆盖新中式、意式、现代简约等多种风格,2025 年市场规模预计持续扩大。但市场增长也带来厂商设计能力…

详细介绍:网络安全防御指南:全方位抵御暴力破解攻击

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【ACM独立出版|EI稳定】第二届云计算与大数据国际学术会议(ICCBD 2025)

ICCBD 2025旨在深入分析云计算与大数据技术的最新发展趋势,探讨其在经济社会数字化进程中的重要作用,以及面临的挑战与机遇。会议为从事研究的专家、学者、工程师和技术人员提供一个国际平台,分享科研成果和尖端技术…

机器学习周报十五 - 教程

机器学习周报十五 - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", &q…

完整教程:【LeetCode 每日一题】2221. 数组的三角和

完整教程:【LeetCode 每日一题】2221. 数组的三角和pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&quo…

软件设计中的需求分析——白日梦

对于我们在日常项目开发中,需求分析通常是一个在整个设计阶段处于一个举足轻重的地位, 在进行心理咨询APP端的开发和老师上课的项目成果第一阶段演示的过程中,要学会做白日梦 所谓的白日梦是我们需要去具体和客户进…

包装工位连接断开,终检产品无法进入包装

包装工位连接断开,终检产品无法进入包装在设置了COP规则的产线,如果发生包装工位连接断开,终检产品无法进入包装,问题在于某站的产品KANBAN没有选。 如下图 查询 select * from t_contex where datemodif=20241012…

2025年苹果仓厂家权威推荐榜单:苹果仓民宿,移动房苹果仓,出口苹果仓,外贸出口苹果仓,集装箱苹果仓,景区苹果仓,苹果仓房屋,网红苹果仓,可移动式苹果仓公司推荐

2025年苹果仓厂家权威推荐榜单:苹果仓民宿,移动房苹果仓,出口苹果仓,外贸出口苹果仓,集装箱苹果仓,景区苹果仓,苹果仓房屋,网红苹果仓,可移动式苹果仓公司推荐 随着模块化建筑理念的深入发展,苹果仓作为一种…