Spring Boot集成Sleuth无TraceId输出问题求助
排查Spring Cloud Sleuth无法输出traceId/spanId的问题
核心问题:版本不兼容
你当前使用的Spring Boot 3.0.6与Spring Cloud 2021.0.1版本不匹配:
- Spring Cloud 2021.0.x(Jubilee)仅支持Spring Boot 2.7.x系列
- Spring Boot 3.0.x需要搭配Spring Cloud 2022.0.x(Kilburn)系列版本
版本不匹配会导致Sleuth核心组件无法正常初始化,进而无法生成traceId和spanId。
修复步骤
1. 调整Spring Cloud版本
修改build.gradle中的springCloudVersion为适配Spring Boot 3.0.x的稳定版本:
ext { set('springCloudVersion', "2022.0.4") }
同步依赖后,确保spring-cloud-starter-sleuth能加载适配Spring Boot 3的版本。
2. 配置日志格式
Spring Boot 3默认日志输出格式不包含traceId和spanId,需显式配置。在application.yml或application.properties中添加:
YAML格式:
logging: pattern: console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%spring.application.name,%X{traceId:-},%X{spanId:-}] %logger{36} - %msg%n"
Properties格式:
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level [%spring.application.name,%X{traceId:-},%X{spanId:-}] %logger{36} - %msg%n
其中%X{traceId:-}表示如果traceId不存在则显示空值,格式完全匹配你预期的[${applicationName}, ${traceId}, ${spanId}]。
3. 验证依赖加载
执行./gradlew dependencies命令,检查是否存在以下核心依赖:
org.springframework.cloud:spring-cloud-starter-sleuthio.micrometer:micrometer-tracing-bridge-brave(Spring Cloud 2022.x版本会自动引入,是Sleuth实现链路追踪的底层依赖)
4. 测试验证
重启应用,调用/hello接口,查看控制台日志,应能看到包含应用名、traceId、spanId的输出内容。
额外排查点
- 检查日志框架冲突:如果项目引入了
log4j2等非默认日志框架,需额外配置Sleuth的日志集成(Spring Boot默认用logback,无需额外配置) - 查看应用启动日志:若存在Sleuth相关报错,根据报错信息进一步排查组件初始化问题
内容的提问来源于stack exchange,提问作者JavaMe
相关产品推荐
相关产品推荐

