当前位置: 首页 > news >正文

在线网摘收藏?让Google来吧!

识吹种粱1、pom.xml 依赖

复制代码

org.springframework.boot

spring-boot-starter-web

org.springframework.boot

spring-boot-starter-test

test

org.springframework.boot

spring-boot-starter-logging

org.projectlombok

lombok

1.16.10

复制代码

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

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

复制代码

[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

${log}/%d{yyyy-MM-dd}.log

30

[traceId:%X{traceId}] %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n

10MB

复制代码

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

logging:

config: classpath:logback.xml

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

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

复制代码

public final class MyThreadPoolTaskExecutor extends ThreadPoolTaskExecutor {

public MyThreadPoolTaskExecutor() {

super();

}

@Override

public void execute(Runnable task) {

super.execute(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));

}

@Override

public Future submit(Callable task) {

return super.submit(TraceIdUtil.wrap(task, MDC.getCopyOfContextMap()));

}

@Override

public 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()) {

@Override

protected void beforeExecute(Thread thread, Runnable runnable) {

super.beforeExecute(thread, runnable);

// 为定时任务生成一个 traceId

TraceIdUtil.setTraceId();

// 可选:添加任务标识

System.out.println("Scheduled task starting with traceId: " + TraceIdUtil.getTraceId());

}

@Override

protected void afterExecute(Runnable r, Throwable t) {

super.afterExecute(r, t);

Threads.printException(r, t);

TraceIdUtil.remove();

}

};

}

http://www.jsqmd.com/news/458047/

相关文章:

  • OpenClaw新手必装的10大神器技能包
  • Redis Cluster高可用架构设计解析
  • Leetcode 第三题:用C++解决最长连续序列
  • 【】利用Asp.net MVC处理文件的上传下载
  • .NET,你忘记了么?(八)—— 从dynamic到特性误用
  • 你真的知道一个HTML及资源是如何load的吗(了解各个部分是何时下载和执行的)
  • 金融风控系统能否用动易API实现Excel公式自动转HTML?
  • DnLUT 超高效的彩色图像去噪服务器训练教程
  • 2026 权威排名出炉:7大CRM系统综合实力测评,助力企业管好客户全生命周期
  • 从大龙虾到NanoClaw:HarmonyOS 6.0 上的OpenClaw AI Agent完全本地化实战
  • 为什么yarn的资源利用率低
  • 深度解析 Agent Reach:Claude Code 与 OpenClaw 的全能联网“脚手架”
  • VSTS 体验 - TFS 变化巨大
  • 每日一题 Day(1)跳石头
  • WinForm界面开发之酒店管理系统--开篇
  • 谈表达式树的缓存():五种缓存方式的性能比较
  • 2026年细聊时代蜂族车位代理销售,合作模式是否合理及车位交通情况 - 工业推荐榜
  • Tauri 项目实践:客户端与 Web 端的授权登录实现方案
  • 开源 - 轻型的表达式引擎 Flee
  • 基于Matlab的并联三相逆变器主从控制策略建模仿真研究
  • Web标准的未来,浏览器的未来,应用的未来。
  • 2026年江苏好用的排烟净化设备,品牌选购攻略 - mypinpai
  • 跨境卖家如何用订单结构调整提升整体毛利
  • 北京俱乐部第三次技术活动
  • 三十载氟硅涂层深耕路,江苏维凯铸就中国智造新高度 - 资讯焦点
  • IACheck:AI报告文档审核助力汽车零部件车规级检测报告精准无误
  • 一个日志框架的开源,有些不错的创意。
  • 氧化镁市场新势力:2026年优质源头厂家排行,靠谱的氧化镁推荐博仕佶镁专注产品质量 - 品牌推荐师
  • 请讨论分层,而不是三层
  • Google wave 的技术分析- Google 企业应用的桥头堡(Web . in Ente