如何使用 Spring Sleuth 2.0 记录 MDC?

How to log MDC with Spring Sleuth 2.0?

参考中的quesition/answer 我认为这个 has/will 改变了 spring-cloud 2.0,因为不再有 SpanLoggerSlf4jSpanLogger(或者我找不到)

如果应用程序属性 spring.sleuth.baggage-keysspring.sleuth.propagation-keys if set 也将放在 MDC 中,我认为在 Slf4jCurrentTraceContext 中(因为这个 class 是目前final我不能子class它)

如果没有,我如何相应地使用 spring-cloud 2.0 实现此目的?

我们不想将所有条目都放在 MDC 中(这确实没有多大意义)。但是,您可以复制 Slf4jCurrentTraceContext 并以您想要的方式扩展它(并将其注册为 bean),或者创建您自己的 CurrentTraceContext 实现来包装现有的 CurrentTraceContext通过 Bean Post 处理器并执行其他逻辑。我想第一个选项更可取。

在版本 2.1.0 中,引入了 Slf4jScopeDecorator,只要它们在 spring.sleuth.log.slf4j.whitelisted-mdc-keys 配置中列入白名单,它就会自动将行李值添加到 MDC。

例如,如果您有以下配置:

spring.sleuth.baggage-keys=key1,key2
spring.sleuth.log.slf4j.whitelisted-mdc-keys=key2

只有key2的值会自动添加MDC,key1的值不会自动添加。

有关详细信息,请参阅:https://cloud.spring.io/spring-cloud-sleuth/reference/html/#prefixed-fields