将 Spring Boot 从版本 2.x 迁移到版本 3 后,我们在日志中丢失了 traceId 和 spanId。
我们删除了所有 sleuth 依赖项并添加了
implementation 'io.micrometer:micrometer-core'
implementation 'io.micrometer:micrometer-tracing'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation platform('io.micrometer:micrometer-tracing-bom:latest.release')
以及
logging.pattern.level: "%5p [${spring.application.name:},%X{traceId:-},%X{spanId:-}]"
但没有记录任何traceIds和spanIds。
我们有什么遗漏的吗?
您需要执行器和桥,不需要您包含的其余部分:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
如果您还想报告您的跨度,您也应该添加 zipkin 报告器:
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'io.micrometer:micrometer-tracing-bridge-brave'
implementation 'io.zipkin.reporter2:zipkin-reporter-brave'
这是 start.spring.io 上的一个示例,并且 micrometer-samples 存储库中有很多示例。
如果是 Spring Webflux 项目,您将无法看到traceId和spanId,因为千分尺在sprint boot 3中不支持。如果是Spring MVC,那么您应该能够看到traceId和SpanId。
https://github.com/spring-projects/spring-boot/issues/33372
https://github.com/spring-projects/spring-framework/issues/29466