记录traceId/spanId的必要性,可以理清楚一整个调用链路
什么是traceId/spanId。在一次请求中,自动为你的该次请求打上一个标签,并且这个标签从头到尾都是同一个标识,通过该标识能够轻松追踪各个环节的情况,这个标识就是traceId。
而spanId通常体现在微服务环境下,反映通过网关跳转经过了第几个服务。
<!-- https://mvnrepository.com/artifact/com.yomahub/tlog-all-spring-boot-starter -->
<dependency>
<groupId>com.yomahub</groupId>
<artifactId>tlog-all-spring-boot-starter</artifactId>
<version>1.5.0</version>
</dependency>
替换为tlog的Encoder,其他配置参照logback的标准配置方法
<!--指定输出格式-->
<encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
<charset>UTF-8</charset>
<pattern>${FILE_LOG_PATTERN}</pattern>
</encoder>
观察输出日志的情况,主要观察trace-id以及spanId
<db20193e83804ce3b4c7564705c6971b><0>日志内容
此处如果想自定义日志格式,可定义配置类LogTraceIdConfig
@Configuration
@ComponentScan({"com.yomahub.tlog"})
public class LogTraceIdConfig {
// 此处把traceId和spanId的位置互换
private static final String PATTERN = "<$traceId><$spanId>";
// 此处自定义traceId生成策略
private static final String ID_GENERATOR = "com.xxx.config.LogTraceIdGenerator";
@Bean("logPropertyInit")
@Primary
public TLogPropertyInit tLogPropertyInit() {
TLogPropertyInit tLogPropertyInit = new TLogPropertyInit();
tLogPropertyInit.setPattern(PATTERN);
tLogPropertyInit.setEnableInvokeTimePrint(false);
tLogPropertyInit.setIdGenerator(ID_GENERATOR);
tLogPropertyInit.setMdcEnable(false);
return tLogPropertyInit;
}
}
/**
* tlog traceId重写
*
* @author
*/
public class LogTraceIdGenerator extends TLogIdGenerator {
@Override
public String generateTraceId() {
return IdUtil.fastSimpleUUID();
}
}
参考资料: