👉 logback
扩展,支持跨线程池的mdc跟踪。
实现上集成使用了Transmittable ThreadLocal(TTL) :在使用线程池等会缓存线程的组件情况下,提供ThreadLocal值的传递功能,解决异步执行时上下文传递的问题。支持
Java 11~21
。
Note
从v2.0+
开始,升级到Java 11
。🚀
如果需要Java 8
的支持,使用版本1.0.x
<dependency>
<groupId>com.ofpay</groupId>
<artifactId>logback-mdc-ttl</artifactId>
<version>2.0.0</version>
</dependency>
-Xbootclasspath/a:/path/to/transmittable-thread-local-2.x.x.jar
-javaagent:/path/to/transmittable-thread-local-2.x.x.jar
- 强制指定使用哪个 SLF4JServiceProvider 实现,从而避免多个绑定时的不确定性问题
-Dslf4j.provider=com.ofpay.logback.TtlSlf4JServiceProvider
<configuration scan="true" scanPeriod="30 seconds">
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--例子: %X{uuid} 支持在跨线程池时传递-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}|%X{uuid}|%level|%M|%C:%L|%thread|%msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
<logger name="org.springframework" level="INFO" />
<logger name="com.ofpay" level="DEBUG" />
</configuration>
- 参考test:
com.ofpay.logback.springboot3