如何使用 Spring Sleuth 2.0 记录 MDC?
How to log MDC with Spring Sleuth 2.0?
参考中的quesition/answer
我认为这个 has/will 改变了 spring-cloud 2.0,因为不再有 SpanLogger
或 Slf4jSpanLogger
(或者我找不到)
如果应用程序属性 spring.sleuth.baggage-keys
和 spring.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
参考SpanLogger
或 Slf4jSpanLogger
(或者我找不到)
如果应用程序属性 spring.sleuth.baggage-keys
和 spring.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