自己生成 traceId 并 put 到 MDC 里面;
使用 SkyWalking traceid 进行链路追踪;
Tlog实现;
使用 Elastic APM 的 trace.id 进行链路追踪;
分布式追踪系统从诞生之际到有实质性的突破,很大程度受到Google Dapper的影响,目前常见的分布式追踪系统有Twitter的Zipkin、SkyWalking、阿里的EagleEye、PinPoint和美团的MTrace等,这些大多都是基于Google Dapper的设计思想
多语言的就自行实现吧,通过head传递过去,解析出来,打印到日志中
MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对。
OncePerRequestFilter请求进入的时候增加traceId、trackId、requestId、tid(其中选一个变量名称),设置到MDC 中,日志打印的时候加上,response的时候也加上
注意:
SpringBoot + MDC 实现全链路调用日志跟踪-CSDN博客
<dependency>
<groupId>org.apache.skywalking</groupId>
<artifactId>apm-toolkit-logback-1.x</artifactId>
<version>{project.release.version}</version>
</dependency>
logback.xml
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
<layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
<Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
</layout>
</encoder>
</appender>