alibaba / transmittable-thread-local

📌 a missing Java std lib(simple & 0-dependency) for framework/middleware, provide an enhanced InheritableThreadLocal that transmits values between threads even using thread pooling components.
https://github.com/alibaba/transmittable-thread-local
Apache License 2.0
7.59k stars 1.69k forks source link

好像不支持Slf4j的MDC? #78

Closed kaybinwong closed 7 years ago

kaybinwong commented 7 years ago

我们使用logback+slf4j收集日志,但是目前2.1.0版本不支持向MDC传递数据?

wuwen5 commented 7 years ago

仅供参考,我们生产上是这么整合使用的。https://github.com/ofpay/logback-mdc-ttl

oldratlee commented 7 years ago

上面 @wuwen5 给的是 logback的集成。

https://github.com/oldratlee/log4j2-ttl-thread-context-map 这个是log4j 2.6的集成。 # log4j 2.8的实现有些变化,要重新理一下才能使用。还没有去做。

不同版本 不同的log实现 的集成 可以参照 上面2个集成。 @kaybinwong

SLF这个Facade上的集成之前看过没有做好。 如果可以搞定,就不需要各个log实现去集成了。

@wuwen5 @kaybinwong 可以一起看看,如果搞定SLF的集成,就直接放到TTL中,太常用的需求了~ 😄 给个Pull Request 💓

oldratlee commented 7 years ago

@kaybinwong TTL提供的是ThreadLocal的传递,日志MDC 是要从日志来 集成 TTL的。

即 从职责或是系统依赖上来说,是 日志 依赖 TTL,不是反过来。

当然,如果能提供好 像SLF这样的集成的实现,因为足够常用 通用 好用(也就是 集成的工作是收敛的,且有广泛的收益),TTL项目应该主动把 把这个集成 实现掉,方便大家 直接使用。

wuwen5 commented 7 years ago

slf4j没想好怎么去集成, 未发布版的slf4j-1.8.0版本支持spi的方式加载logger实现。

但是没想好怎么去替换MDCAdapter实现中的context,我的想法是需要保留日志框架自己的MDCAdapter实现方式的基础上去解决context的问题.

taotao365s commented 7 years ago

简单的验证了下 slf4j+logback的mdc,在多线程下是可以用的,

https://github.com/ofpay/logback-mdc-ttl/issues/1

oldratlee commented 7 years ago

@shipengyan COOL~

我把 https://github.com/ofpay/logback-mdc-ttl 加到TTL的文档中,方便大家了解&使用。 @wuwen5 @shipengyan

oldratlee commented 7 years ago

@wuwen5

已经 加到 https://github.com/alibaba/transmittable-thread-local/blob/master/docs/requirement-scenario.md 上了。

image