# 日志链路追踪
注意
该架构已默认移除Logback日志系统,引入Log4j2
日志系统,详情参见pom.xml (opens new window)
# 日志配置
Log4j2日志配置文件已集成在项目中,详情参见下列文件
生产环境与开发环境的区别
- 增加了日志滚动大小,方便排查问题
- 增加了日志保留天数,方便回查日志
# 链路追踪
实现原理:
- 通过
log4j2-ttl-thread-context-map依赖自定义了log4j2.threadContextMap上下文Map - 指定了
MDC变量LoggerKey,值为雪花ID - 将
MDC变量添加到日志输出PatternLayout中的正则表达式
log4j2-ttl-thread-context-map底层通过TransmittableThreadLocal.java复写了InheritableThreadLocal.java,解决了在多线程下使用线程池时父子线程值传递的问题,保证MDC值可以向下线程传递
Question
- 为什么要使用
Log4j2而不是用Logback
Logback在Spring-boot2.x被指定为默认的日志系统,替代了Log4j,目前最新的Log4j2已经汲取了老版本经验,参考了Logback的部分优秀的设计,修复了一些问题,在各个方面都带来了重大的提升