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

Spring Boot集成Micrometer时TraceId与SpanId无法打印问题

解决日志未自动追加TraceId的问题

1. 配置日志输出格式

Spring Boot 3.x 默认使用 Logback,需在日志配置中显式添加 TraceId 和 SpanId 的占位符,才能让日志自动携带链路信息。

方式一:通过 application.yml/application.properties 配置

在 application.yml 中添加:

logging:
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n"
    file: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n"

或在 application.properties 中配置:

logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n
logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n

%X{traceId:-} 表示若 TraceId 不存在则输出空值,避免破坏日志格式。

方式二:通过 logback-spring.xml 配置

如果自定义了 Logback 配置文件,需在 <encoder> 的 <pattern> 中追加链路ID占位符:

<configuration>
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %X{traceId:-} %X{spanId:-}%n</pattern>
        </encoder>
    </appender>
    <root level="info">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

2. 验证链路追踪上下文是否生效

在代码中注入 Tracer 手动获取 TraceId,确认链路核心逻辑是否正常初始化:

import io.micrometer.tracing.Tracer;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class TestController {
    private final Tracer tracer;

    public TestController(Tracer tracer) {
        this.tracer = tracer;
    }

    @GetMapping("/test")
    public String testTrace() {
        String traceId = tracer.currentSpan().context().traceId();
        String spanId = tracer.currentSpan().context().spanId();
        System.out.println("TraceId: " + traceId + ", SpanId: " + spanId);
        return "TraceId: " + traceId;
    }
}

调用接口后,如果能正常打印 TraceId,说明链路逻辑正常,问题出在日志配置;若返回 null,需检查依赖或配置冲突。

3. 排查依赖兼容性

Spring Boot 3.2.0 适配的 Micrometer Tracing 版本为 1.3.x,你当前引入的 micrometer-tracing-bom:1.3.1 是兼容的,但需确保未引入其他链路追踪框架(如旧版 Zipkin、OpenTelemetry 等)导致依赖冲突。

4. 通过 Actuator 验证加载状态

已引入 spring-boot-starter-actuator 的情况下,可访问 /actuator/metrics 端点,查看是否存在 trace 相关指标,确认链路追踪组件是否被正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 23:33:22