ofpay / logback-mdc-ttl

logback扩展,集成transmittable-thread-local支持跨线程池的mdc跟踪
Apache License 2.0
153 stars 38 forks source link

slfj-1.4.1版本不支持 #10

Closed youngledo closed 4 months ago

youngledo commented 5 months ago

该版本新增了很多方法,导致没有实现方法,启动报错 image

image

备注:我使用的是Spring Boot 3.2版本,升级后logback、slfj版本也都升级了,导致失效。

翻看logback-classic源码,发现1.2.11版本下是这样拿Map的: image 但是在高版本是这样的,所以失效了:

image
jov1 commented 4 months ago

Spring Boot 3.1.5,对于logback版本为logback-classic-1.4.11,测试很久发现同样问题,引入mdc后反而打印不了traceId,新版获取mdc适配器换成 image 然后初始化是固定的LogbackMDCAdapter,所以最后又回到LogbackMDCAdapter没有用自定义的TtlMDCAdapter image 我目前的方案是拷贝LogbackMDCAdapter文件至本地工程同名同路径,然后修改readWriteThreadLocalMap和readOnlyThreadLocalMap为TransmittableThreadLocal,然后可以实现效果,这样其实也就不需要这个jarl了,只需要重写LogbackMDCAdapter,但是不够优雅,毕竟修改的是日志实现,不如这个mdc修改slf4j优雅,目前无奈之举吧 image image

youngledo commented 4 months ago

跟我的方案是一样的,这样做其实很挫。正确的做法是通过SPI去扩展,但是因为目前够用也没啥问题,先这样。