# 日志链路追踪

注意

该架构已默认移除Logback日志系统,引入Log4j2 日志系统,详情参见pom.xml (opens new window)

# 日志配置

Log4j2日志配置文件已集成在项目中,详情参见下列文件

生产环境与开发环境的区别

  • 增加了日志滚动大小,方便排查问题
  • 增加了日志保留天数,方便回查日志

# 链路追踪

实现原理:

  1. 通过log4j2-ttl-thread-context-map依赖自定义了log4j2.threadContextMap上下文Map
  2. 指定了MDC变量LoggerKey,值为雪花ID
  3. MDC变量添加到日志输出PatternLayout中的正则表达式

log4j2-ttl-thread-context-map底层通过TransmittableThreadLocal.java复写了InheritableThreadLocal.java,解决了在多线程下使用线程池时父子线程值传递的问题,保证MDC值可以向下线程传递

Question

  1. 为什么要使用Log4j2而不是用Logback

LogbackSpring-boot2.x被指定为默认的日志系统,替代了Log4j,目前最新的Log4j2已经汲取了老版本经验,参考了Logback的部分优秀的设计,修复了一些问题,在各个方面都带来了重大的提升

点击查看Log4j2介绍 (opens new window)

点击查看Log4j2性能对比 (opens new window)

Last Updated: 10/28/2021, 5:59:51 PM