如何使用Spring Sleuth 2.0记录MDC?

时间:2018-03-30 21:38:26

标签: spring-boot slf4j spring-cloud-sleuth

参考How to log MDC with Spring Sleuth?中的问题/答案 我认为这已经/将会改变(d)spring-cloud 2.0,因为不再有SpanLoggerSlf4jSpanLogger(或者我找不到它)

如果设置的应用程序属性spring.sleuth.baggage-keysspring.sleuth.propagation-keys也会放在MDC中,我认为Slf4jCurrentTraceContext内部(因为此类目前是{{1}我无法继承它)

如果没有,我怎么能相应地使用spring-cloud 2.0实现这个目标?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

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

key2

只有key1的值将被自动添加MDC,而不是main ├── .gitignore └── build (subtree) ├── .gitignore └── config.user.json └── config.site.json └── index.js 的值。

有关更多信息,请参见:https://cloud.spring.io/spring-cloud-sleuth/reference/html/#prefixed-fields