Spring boot基于MDC+Logback+TTL实现日志链路追踪分享,妈妈再也不用担心找不到日志了#java #springboot - 散装java于20240825发布在抖音,已经收获了6.2万个喜欢,来抖音,记录美好生活!
TransmittableThreadLocal简称TTL。 其原理就是在MDC中替换inheritableThreadLocal为TransmittableThreadLocal从而解决以上问题。 他提供了一个修饰线程池的工具:TtlExecutors.getTtlExecutor(executor)。 具体用法如下: /** * @author AUTO_BEAR */@Configuration@EnableAsyncpublicclassThreadpool{@BeanpublicExecutortestExecutor...
//github.com/ofpay/logback-mdc-ttl.git</git.url> <java.version>1.8</java.version> <maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.target>${java.version}</maven.compiler.target> <logback.version>1.2.11</logback.version> </properties> <groupId>com.ofpay</...
但是实际业务中一般都是用线程池,当线程复用时会导致这个值不正确,于是在看到了transmittable-thread-local,以及logback对应实现的logback-mdc-ttl。 1、logback-mdc-ttl在使用过程中并没能生效,又因为我不太看得懂logback配置的加载机制和它的spi,于是我选择用java agent对MDC.bwCompatibleGetMDCAdapterFromBinder方法进...
`Logback`的集成参见[@ofpay](https://github.com/ofpay)提供的[`logback-mdc-ttl`](https://github.com/ofpay/logback-mdc-ttl)。 这个集成已经在 **_线上产品环境_** 使用的。说明详见[欧飞网的使用场景](https://github.com/alibaba/transmittable-thread-local/issues/73#issuecomment-300665308)。 ...
日志配置文件,官方文档建议使用-spring 命令格式的配置,日志框架不直接加载,由SpringBoot解析日志配置,如:logback-spring.xml。如果直接定义为logback.xml 将直接被日志框架识别。下面详细解释下logback-spring.xml中属性的具体作用: <configuration> <contextListener class="com.ofpay.logback.TtlMdcListener"/> ...
><contextListenerclass="com.ofpay.logback.TtlMdcListener"/><appendername="console"class="ch.qos.logback.core.ConsoleAppender"><encoder><charset>UTF-8</charset><Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n</Pattern></encoder></appender><...
<contextListener class="com.ofpay.logback.TtlMdcListener"/> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <charset>UTF-8</charset> <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{requestId}] %-5level %-50logger{50}: %msg%n</Pattern> ...
@Component public class ApplicationStartedListener implements ApplicationListener<ContextRefreshedEvent> { @Override public void onApplicationEvent(ContextRefreshedEvent event) { if (event instanceof ContextRefreshedEvent) { TtlMDCAdapter.getInstance(); } } } 3.1.3 示例 @RestController @Slf4j public class...
-- Your project must also directly depend on either logback-classic or logback-access. For example: --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.6</version><!-- Use runtime scope if the project does not have any compile-time usage...