我正在做一个演示项目,以启用分布式跟踪日志。我最初使用sleuth,但后来发现它正在迁移到micro(Sleuth与 Boot . x不兼容)
但出于我的惊讶,我无法在控制台的日志中看到traceId和spanId。
我所做的改变。
在pom.xml中增加依赖
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-tracing-bridge-brave</artifactId>
<version>1.1.1</version>
<exclusions>
<exclusion>
<groupId>io.zipkin.brave</groupId>
<artifactId>brave</artifactId>
</exclusion>
</exclusions>
</dependency>
- 排除了io.zipkin.brave,因为它会导致依赖冲突。*
在logback.xml上增加consoleAppender
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+ <encoder>
+ <Pattern>
+ %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} [%X{X-B3-TraceId},%X{X-B3-SpanId}] - %msg%n
+ </Pattern>
+ </encoder>
+ </appender>
我创建了一个测试控制器:
@GetMapping("/log/test")
public ResponseEntity<String> test()
{
log.info("Inside test");
return ResponseEntity.ok("Done");
}
当我试图击中这个控制器时,我没有在日志中获取traceId。样本日志:
2023-06-20 18:19:31.649 [http-nio-8090-exec-2] INFO a.b.c.TestController [,] - Inside test
根据我的理解,mdc将traceId和spanId直接放在日志行中。我很困惑我在这里错过了什么。
任何帮助将不胜感激。
1条答案
按热度按时间djp7away1#
将
%X{X-B3-TraceId},%X{X-B3-SpanId}
更改为%X{traceId},%X{spanId}