標籤:

Logback架構

我於2015年下半年曾讀過Logback(1.1.3)的源碼。記得一開始讀時非常吃力,不知從何處入手,很多東西覺得困惑,不得不大量列印其中細節才能搞懂。

我開始學著閱讀官方英文文檔,研究配置文件,嘗試使用API並且窺視其實現,並做了一些筆記和畫圖。

Logger時序圖

UML圖

第二張圖是自己手繪。在閱讀源碼的過程中,不能鬍子眉毛一把抓,而是應該把注意力放在核心類上,而不是那些輔助類上。把核心類的核心API搞懂之後,整個架構就差不多搞懂了,其他的類只是補充和完善。Logback的核心類有 StaticLoggerBinder, LoggerFactory, LoggerContext, Logger, Appender, Encoder等。

從上圖可以發現,Logback架構可分為兩大部分:

1)調用委託鏈:Logger -> Appender -> Encoder

2)初始化和解析配置文件(用到反射技術)

還可以發現LoggerFactory是入口類,LoggerContext是核心類,StaticLoggerBinder把logback和slf4j聯繫起來。

當時反覆參考過以下資料:

Logback Manual

slf4j初始化綁定源碼分析

讀logback源碼系列文章(一)--對接slf4j - 女兒3歲了還是要繼續鑽研技術 - ITeye博客

推薦閱讀:

鋼鐵雄心4開發日誌 | 3/15 1.5.1 版本號測試補丁更新(新增內容)
絕對路勁&查看日誌
Stellaris開發日誌#106 | 3/2 2.0.2版本號改動日誌與切莉的未來進路
如何查看Django ORM執行的SQL語句
#Deload Week -- 新年快樂

TAG:日誌 |