【发布时间】:2023-01-26 06:51:36
【问题描述】:
以下 Open Telemetry 启动器已添加到 Spring Boot 项目 (v2.7.2) 以检测应用程序:
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-spring-boot-starter</artifactId>
<version>1.22.1-alpha</version>
</dependency>
<dependency>
<groupId>io.opentelemetry.instrumentation</groupId>
<artifactId>opentelemetry-jaeger-spring-boot-starter</artifactId>
<version>1.22.1-alpha</version>
</dependency>
跟踪和跨度已成功导出到 Jaeger 收集器。问题是那些跟踪和跨度无法与日志语句相关联,因为日志不包含当前的 trace_id 和 span_id。
通过关注 the documentation,我将 logging.pattern.level 属性添加到 application.properties,但似乎有关当前跨度的信息未注入到日志记录事件的 MDC 副本中。
logging.pattern.level = trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
例如:
log.info(
"traceId: {}, spanId: {}",
Span.current().getSpanContext().getTraceId(),
Span.current().getSpanContext().getSpanId());
2023-01-25 12:21:36.774 trace_id= span_id= trace_flags= INFO 34272 --- [nio-8080-exec-2] h.c.DemoController:traceId:1bccb6a4fea8345026ca87a202f0091f,spanId:c59a5d44ee40cd2c
我错过了什么吗?
【问题讨论】:
-
MDC 检测仅适用于 Java 代理。 “OTel Java 代理注入……”
标签: spring-boot logback open-telemetry mdc