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

如何在Spring Boot 3中用Micrometer捕获X-B3-TraceId和X-B3-SpanId

在Spring Boot 3中用Micrometer捕获X-B3-TraceId和X-B3-SpanId

Spring Boot 3 弃用了 Spring Cloud Sleuth,转而采用 Micrometer Tracing 作为可观测性追踪的门面,结合 Brave 实现来支持 B3 协议。以下是具体配置步骤:

1. 调整依赖

移除原有的 Spring Cloud Sleuth 依赖,添加 Micrometer Tracing 及 Brave 桥接依赖:

Maven 配置

<dependencies>
    <!-- Micrometer 追踪门面 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing</artifactId>
    </dependency>
    <!-- Brave 作为具体实现,支持 B3 协议 -->
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-brave</artifactId>
    </dependency>
    <!-- Zipkin 上报依赖(可选,若需要将追踪数据上报到 Zipkin) -->
    <dependency>
        <groupId>io.zipkin.reporter2</groupId>
        <artifactId>zipkin-reporter-brave</artifactId>
    </dependency>
</dependencies>

Gradle 配置

dependencies {
    implementation 'io.micrometer:micrometer-tracing'
    implementation 'io.micrometer:micrometer-tracing-bridge-brave'
    implementation 'io.zipkin.reporter2:zipkin-reporter-brave' // 可选
}

2. 日志配置(Logback)

根据需求选择两种配置方案之一:

方案一:直接使用 Micrometer 默认 MDC 键

Micrometer Tracing(基于 Brave)默认会将 traceId 和 spanId 写入 MDC,只需修改 Logback 日志模板:

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
        <pattern>%d{YYYY:MM:dd HH:mm:ss.SSSZ} 
            [%X{traceId:-},%X{spanId:-}]
            [${HOSTNAME}] [${PID:- }]
            %msg%n
        </pattern>
    </encoder>
</appender>

方案二:保留原 X-B3 前缀的 MDC 键

如果希望继续使用 X-B3-TraceId 和 X-B3-SpanId 作为 MDC 键名,添加自定义配置类:

import brave.Tracing;
import brave.context.slf4j.MDCScopeDecorator;
import brave.propagation.CurrentTraceContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class TracingConfig {
    @Bean
    public Tracing braveTracing() {
        return Tracing.newBuilder()
                .currentTraceContext(CurrentTraceContext.newBuilder()
                        .addScopeDecorator(MDCScopeDecorator.newBuilder()
                                .traceIdKey("X-B3-TraceId")
                                .spanIdKey("X-B3-SpanId")
                                .build())
                        .build())
                .build();
    }
}

配置后即可继续使用你原来的 Logback 模板。

3. 启用 Observation API(默认已开启)

Spring Boot 3 集成了 Observation API 作为统一的可观测入口,确保其处于启用状态(默认已开启),可通过配置文件确认:

management.observation.enabled=true

Micrometer Tracing 会自动集成 Spring MVC/WebFlux,无需额外配置即可为 HTTP 请求生成 traceId 和 spanId。

验证

启动应用后发起请求,查看控制台日志,即可看到 traceId 和 spanId 按配置格式输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 06:37:11