Skip to content

链路追踪

虽然是个单体项目,但traceId对于排查问题找bug非常重要,也可以避免把时间花费在找日志上。
traceId的传递逻辑是加了一个拦截器,请求进入后生成traceId并set到response的响应头里,请求结束后清理这个traceId。使用时你从页面发起请求,如果出现异常等情况,打开F12拿到响应头里的traceId,就可以去日志里查找到从请求到响应的日志了。
关于异步处理时traceId的传递,支持使用@Async时traceId的传递,还有其他多线程操作时需要使用系统中声明的线程池才可以跨线程传递traceId。

@Autowired  
private Executor threadPoolExecutor;

CompletableFuture.runAsync(() -> {  
//你的业务逻辑代码  
  
}, threadPoolExecutor);//指定线程池

threadPoolExecutor就是系统中配置的线程池,使用它就可以跨线程传递traceId。如果你自己new Thread那么traceId将需要手动传递。