如何使用 Spring Sleuth 2.0 记录 MDC?
Posted
技术标签:
【中文标题】如何使用 Spring Sleuth 2.0 记录 MDC?【英文标题】:How to log MDC with Spring Sleuth 2.0? 【发布时间】:2018-09-09 22:16:24 【问题描述】:参考How to log MDC with Spring Sleuth?中的问题/答案
我认为这已经/将会随着 spring-cloud 2.0 改变(d),因为不再有 SpanLogger
或 Slf4jSpanLogger
(或者我找不到它)
如果应用程序属性 spring.sleuth.baggage-keys
和 spring.sleuth.propagation-keys
如果 set 也可以放在 MDC 中,那不是很好吗我认为在 Slf4jCurrentTraceContext
里面(因为这个类目前是 final
我不能子类化它)
如果没有,我如何使用 spring-cloud 2.0 相应地实现这一点?
【问题讨论】:
【参考方案1】:在2.1.0
版本中,引入了Slf4jScopeDecorator
,它会自动将行李值添加到MDC,只要它们在spring.sleuth.log.slf4j.whitelisted-mdc-keys
配置中被列入白名单。
例如,如果您有以下配置:
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
【讨论】:
【参考方案2】:我们不想将所有条目都放在 MDC 中(这真的没有多大意义)。但是,您可以复制 Slf4jCurrentTraceContext
并以您想要的方式扩展它(并将其注册为 bean),或者创建您自己的 CurrentTraceContext
实现,通过 Bean 后处理器包装现有的 CurrentTraceContext
和执行附加逻辑。我想第一个选项更可取。
【讨论】:
以上是关于如何使用 Spring Sleuth 2.0 记录 MDC?的主要内容,如果未能解决你的问题,请参考以下文章
spring cloud sleuth 如何将跟踪信息添加到 logback 日志行
精通springcloud:分布式日志记录和跟踪使用,Spring Cloud Sleuth