Spring Boot 3 Trace ID追踪配置无效问题求助
Spring Boot 3 自定义异常端点日志缺失Trace ID问题解决
核心问题定位
Spring Boot 3 已弃用Spring Cloud Sleuth,改用Micrometer Tracing作为分布式追踪方案。你的配置存在三个关键问题:依赖冲突、Logback MDC键名错误、上下文未正确传递。
1. 修复依赖配置
你同时引入了适配Spring Boot 2的spring-cloud-starter-sleuth和Spring Boot 3的micrometer-tracing-bridge-otel,二者存在冲突。替换为纯Micrometer Tracing体系的依赖:
<!-- 保留你后续要用的GELF依赖 --> <dependency> <groupId>de.siegmar</groupId> <artifactId>logback-gelf</artifactId> <version>6.0.1</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> <version>3.2.4</version> </dependency> <!-- Micrometer Tracing核心依赖 --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing</artifactId> </dependency> <!-- OTel桥接依赖,处理Trace上下文 --> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-tracing-bridge-otel</artifactId> <version>1.2.5</version> </dependency> <!-- 可选:若需上报Trace到Zipkin,保留此依赖 --> <dependency> <groupId>io.zipkin.reporter2</groupId> <artifactId>zipkin-reporter-brave</artifactId> <version>3.4.0</version> </dependency>
2. 修正Logback配置
Micrometer Tracing + OTel体系下,MDC的Trace/Span ID键名已变更,替换logback-spring.xml中的日志模式:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [traceId=%X{trace_id}] [spanId=%X{span_id}] [%t] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="INFO"> <appender-ref ref="Console"/> </root> </configuration>
3. 确保异常端点在Spring上下文内
- 自定义异常端点需用
@RestController/@Controller标注,确保被Spring MVC/WebFlux的请求拦截器处理,注入Trace上下文。 - 全局异常处理器(
@RestControllerAdvice)需确保在请求上下文执行,避免脱离Trace环境。
验证操作
- 执行
mvn clean install清理并重新构建项目 - 重启应用,触发自定义异常端点
- 检查控制台日志,确认Trace ID和Span ID已正常输出
内容的提问来源于stack exchange,提问作者Nika Melashvili
相关产品推荐
相关产品推荐

