记录哪个X-B3-SpanId或SpanId? X-B3-TraceId或TraceId? (春季侦探)

时间:2019-06-26 07:58:36

标签: java spring logging

Spring的侦探添加到MDC X-B3-SpanId和SpanId。 (与TraceId相同)

{X-B3-SpanId=0000000000000001, X-B3-TraceId=0000000000000002, X-Span-Export=false, spanExportable=false, spanId=0000000000000001, traceId=0000000000000002}

“ X-B3-”前缀值与非前缀相同。
如果其中之一是多余的,我希望将其删除。 (以减少日志的详细程度)

X-B3-SpanId和SpanId之间有什么区别吗? (X-B3-TraceId和Traceid)
是否有充分的理由同时登录两者?

春季文档https://cloud.spring.io/spring-cloud-sleuth/2.1.x/single/spring-cloud-sleuth.html#_propagation中的图表显示,前缀为“ X-B3-”的内容仅存在于请求标头中以进行传输,但是如果我在没有任何标头的情况下发出请求,则日志的MDC仍包含“ X-B3 -“带前缀的值。


使用的依赖项:

  • org.springframework.boot:spring-boot-starter-log4j2:2.0.3.RELEASE
  • org.springframework.cloud:spring-cloud-sleuth-core:2.0.3.RELEASE

只需将依赖项简单地添加到gradle.build中-无需对侦探进行任何自定义/配置。

* MDC = log4j2的映射诊断上下文https://logging.apache.org/log4j/2.x/manual/thread-context.html

1 个答案:

答案 0 :(得分:5)

看一下Slf4jScopeDecorator类,很明显这两个值完全相同,并且它们仅保留X-B3 *前缀值以实现向后兼容:

 * Adds {@linkplain MDC} properties "traceId", "parentId", "spanId" and "spanExportable"
 * when a {@link brave.Tracer#currentSpan() span is current}. These can be used in log
 * correlation. Supports backward compatibility of MDC entries by adding legacy "X-B3"
 * entries to MDC context "X-B3-TraceId", "X-B3-ParentSpanId", "X-B3-SpanId" and
 * "X-B3-Sampled"

https://github.com/spring-cloud/spring-cloud-sleuth/blob/master/spring-cloud-sleuth-core/src/main/java/org/springframework/cloud/sleuth/log/Slf4jScopeDecorator.java

因此,您可以使用任意两个,但要注意,他们认为X-B3 *变量是遗留的