You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Cloud Starter Sleuth无法显示TraceID、SpanID求助

解决Spring Cloud Sleuth未生成TraceID/SpanID的问题

你的配置框架是对的,但有几个关键细节可以排查,帮你解决日志里没有TraceID和SpanID的问题:

1. 升级Spring Cloud版本到稳定版

你当前使用的Finchley.RC2是候选发布版,可能存在未修复的兼容性问题。Spring Boot 2.0.2.RELEASE对应的稳定Spring Cloud版本是Finchley.RELEASE,建议修改pom.xml里的版本:

<properties>
    <!-- 其他配置保持不变 -->
    <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>

修改后执行mvn clean install刷新依赖,这一步大概率能解决版本兼容带来的自动配置失效问题。

2. 验证Sleuth自动配置是否生效

启动应用时,你已经配置了sleuth: DEBUG级别日志,查看启动日志里是否有类似以下的内容:

DEBUG [MyApp,,,] ... o.s.c.s.autoconfig.TraceAutoConfiguration : Creating bean 'tracer'
DEBUG [MyApp,,,] ... o.s.c.s.autoconfig.SleuthWebAutoConfiguration : Creating bean 'webMvcTraceFilter'

如果看不到这些日志,说明Sleuth的自动配置没有被加载,可能是:

  • 主类没有添加@SpringBootApplication注解(确保该注解存在,它包含了自动配置扫描逻辑)
  • 存在其他配置类通过@EnableAutoConfiguration(exclude = ...)排除了Sleuth的自动配置

3. 检查依赖树,排除冲突

执行mvn dependency:tree命令,查看依赖树中是否存在与Sleuth冲突的包。比如,确保brave(Sleuth底层依赖的追踪库)的版本是Finchley.RELEASE对应的版本,没有被其他依赖强制覆盖。

4. 测试简单REST接口,验证日志输出

写一个简单的测试接口,主动打印日志,验证是否能生成TraceID/SpanID:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestTraceController {
    private static final Logger log = LoggerFactory.getLogger(TestTraceController.class);

    @GetMapping("/trace-test")
    public String traceTest() {
        log.info("This is a test log for Sleuth trace");
        return "Trace test completed";
    }
}

启动应用后调用http://localhost:8081/trace-test,此时日志应该会显示类似:

2018-05-29 15:06:39.727 INFO [MyApp,abc123,def456,false] 13916 --- [nio-8081-exec-1] c.e.m.TestTraceController : This is a test log for Sleuth trace

其中abc123是TraceID,def456是SpanID。

兜底检查:日志格式配置

Sleuth默认会自动修改日志格式,将TraceID和SpanID注入到[appname,traceId,spanId,exportable]的位置。如果你的项目自定义了日志配置(比如logback.xml),需要确保格式中包含%X{X-B3-TraceId:-} %X{X-B3-SpanId:-}这样的占位符,否则Sleuth无法注入Trace/Span信息。不过从你的日志示例来看,格式符合默认规范,这一步大概率不是问题,但可以作为最后排查点。

内容的提问来源于stack exchange,提问作者DolphinJava

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:04:33