当前位置: 首页 > 工具软件 > TLog > 使用案例 >

使用Tlog记录traceId/spanId

孙书
2023-12-01

记录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();
    }

}

参考资料:

 类似资料: