我于2015年下半年曾读过Logback(1.1.3)的源码。记得一开始读时非常吃力,不知从何处入手,很多东西觉得困惑,不得不大量打印其中细节才能搞懂。
我开始学着阅读官方英文文档,研究配置文件,尝试使用API并且窥视其实现,并做了一些笔记和画图。
第二张图是自己手绘。在阅读源码的过程中,不能胡子眉毛一把抓,而是应该把注意力放在核心类上,而不是那些辅助类上。把核心类的核心API搞懂之后,整个架构就差不多搞懂了,其他的类只是补充和完善。Logback的核心类有 StaticLoggerBinder, LoggerFactory, LoggerContext, Logger, Appender, Encoder等。
从上图可以发现,Logback架构可分为两大部分:
1)调用委托链:Logger -> Appender -> Encoder
2)初始化和解析配置文件(用到反射技术)
还可以发现LoggerFactory是入口类,LoggerContext是核心类,StaticLoggerBinder把logback和slf4j联系起来。
当时反复参考过以下资料: