Log4j API 采用分層架構(gòu),每一層有不同的對(duì)象,完成不同的任務(wù)。這種分層架構(gòu)讓設(shè)計(jì)變得靈活,且易于日后擴(kuò)展。
Log4j 里有兩種類(lèi)型的對(duì)象:
核心對(duì)象包括如下幾種類(lèi)型:
最上一層是 Logger 對(duì)象,該對(duì)象負(fù)責(zé)獲取日志信息,并存儲(chǔ)于一個(gè)分層的命名空間之中。
Layout 層提供了用于以各種風(fēng)格格式化日志信息的對(duì)象,在發(fā)布日志信息之前,它為 appender 對(duì)象提供支持。
Layout 對(duì)象對(duì)于發(fā)布日志信息非常重要,它使日志變得可讀、可復(fù)用。
該對(duì)象位于分層架構(gòu)中的較低一層,Appender 對(duì)象負(fù)責(zé)將日志信息發(fā)布到不同目的地,比如數(shù)據(jù)庫(kù)、文件、控制臺(tái)、Unix Syslog 等。
下圖展示了 Log4j 框架中的組件:
http://wiki.jikexueyuan.com/project/log4j/images/log4j-arch.jpg" alt="" />
Log4j 中還有其他一些對(duì)象,同樣在框架中發(fā)揮著重要作用。
Level 對(duì)象定義了日志信息的粒度和優(yōu)先級(jí)。API 定義了七種級(jí)別:OFF、DEBUG、INFO、ERROR、WARN、FATAL、ALL。
Filter 對(duì)象用來(lái)分析日志信息,進(jìn)而決定該條日志是否被記錄。
一個(gè) Appender 對(duì)象可對(duì)應(yīng)多個(gè) Filter 對(duì)象,當(dāng)日志信息傳給 Appender 對(duì)象時(shí),與其關(guān)聯(lián)的所有 Filter 對(duì)象需要判斷是否將日志信息發(fā)布到目的地。
ObjectRenderer 對(duì)象負(fù)責(zé)為傳入日志框架的不同對(duì)象提供字符串形式的表示,Layout 對(duì)象使用該對(duì)象來(lái)準(zhǔn)備最終的日志信息。
LogManager 對(duì)象管理日志框架,它負(fù)責(zé)從系統(tǒng)級(jí)的配置文件或類(lèi)中讀取初始配置參數(shù)。