上文《分布式链路日志plumelog教程(二)springboot项目集成plumelog》我们在springboot的接口里面集成了plumelog和追踪码,这里的话,也提到一个问题,就是如果使用定时器,或者其他的mq消费者等方式进行对接的话,此时就没有追踪码了,就没法看到全链路日志了,那这个怎么解决的呢?其实比较简单,就是我们在调用方法之前,来手动设置一个traceid,这样他就会延续的待下去,最后就可以实现全链路的,下面进行演示:
一、编写helper
这种的话,我们一般会直接写一个helper类来进行创建traceid,示例下面的代码:
public class LoggerHelper {
private static final String SCHEDULER_TRACE_ID = "Task_";
public static void setSchedulerTraceId(String type) {
String traceId = SCHEDULER_TRACE_ID + type + "_" + UUID.randomUUID().toString().replace("-", "");
MDC.put(LOG_TRACE_USER_IDENTIFIER, traceId);
TraceId.logTraceID.set(traceId);
}
}这个类比较简单,主要是mdc中put traceid,同时设置对应的log的traceid即可。
二、使用
最后在使用的时候也比较简单,比如我们启动定时器,或者mq中接收到对应的msg需要处理的时候,在之前直接调用一下:
LoggerHelper.setSchedulerTraceId("mq_topic_orders");调用下上面这一行代码,然后就可以继续进行log的日志打印了,最后在plumelog中就会有对应的追踪码traceid,就可以完成对应的全链路了,是不是非常方便。

还没有评论,来说两句吧...