Spring Boot 使用千分尺时,TraceId未被推入日志

i5desfxk  于 2023-06-22  发布在  Spring
关注(0)|答案(1)|浏览(256)

我正在做一个演示项目,以启用分布式跟踪日志。我最初使用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直接放在日志行中。我很困惑我在这里错过了什么。
任何帮助将不胜感激。

djp7away

djp7away1#

%X{X-B3-TraceId},%X{X-B3-SpanId}更改为%X{traceId},%X{spanId}

相关问题