清新明月CE 潜水
  • 3发帖数
  • 3主题数
  • 0关注数
  • 0粉丝
开启左侧

从问题出发学习slf4j、logback源码系列-pattern内容解析

[复制链接]
清新明月CE 发表于 2021-10-3 16:28:14 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
问题:logback.xml里面我们一样平常会配置日志的打印格式,比如%date [%thread] %-5level %X{tid} %logger{50}:%L - %msg%n,logback是如何解析和使用pattern的呢?
在logback初始化解析xml的过程中,会进入PatternLayoutBase.java的start方法

                               
登录/注册后可看大图

在Parser构造函数里会使用TokenStream将pattern解析为Token的集合

                               
登录/注册后可看大图

然后在Parser的parse方法会把tokenList构建成Node链表

                               
登录/注册后可看大图

然后进入PatternLayoutBase.java的start方法比较关键的一步this.head = p.compile(t, getEffectiveConverterMap());
getEffectiveConverterMap()方法在PatternLayoutBase的子类PatternLayout里,将各种符号和对应的Converter放在了一个map里

                               
登录/注册后可看大图

接着是在complie方法里面把Node链表和Converter的map构建成了Converter的链表

                               
登录/注册后可看大图


                               
登录/注册后可看大图


                               
登录/注册后可看大图

接着在postCompileProcessor.process(context, head),会把异常相关的Converter放到链表的尾节点,

                               
登录/注册后可看大图

到这里,根据pattern构造Converter链表就竣事了,后面拼接日志文本的内容就是根据Converter链表来举行的

                               
登录/注册后可看大图
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
在线客服邮箱
wxcy#wkgb.net

邮箱地址#换为@

Powered by 创意电子 ©2018-现在 专注资源实战分享源码下载站联盟商城