Posted on 2011-11-14 09:04
陳小東 閱讀(639)
評論(0) 編輯 收藏
Log4j支持兩種配置文件格式,一種是XML格式的文件,一種是Java特性文件log4j.properties(鍵=值)。
log4j 是一個(gè)開放源碼項(xiàng)目,是廣泛使用的以Java編寫的日志記錄包。由于log4j出色的表現(xiàn),當(dāng)時(shí)在log4j完成時(shí),log4j開發(fā)組織曾建議sun在jdk1.4中用log4j取代jdk1.4 的日志工具類,但當(dāng)時(shí)jdk1.4已接近完成,所以sun拒絕使用log4j,當(dāng)在java開發(fā)中實(shí)際使用最多的還是log4j,人們遺忘了sun的日志工具類。它的一個(gè)獨(dú)有特性包括在類別中繼承的概念。通過使用類別層次結(jié)構(gòu),這樣就減少了日志記錄輸出量,并將日志記錄的開銷降到最低。
關(guān)于log4j的介紹就不再多說了,網(wǎng)上有很多相關(guān)的資料。目前我們?nèi)A南研發(fā)中心也在使用log4j,但就我參加的項(xiàng)目而言有一點(diǎn)的問題,我們應(yīng)該不是為了使用log4j而去使用,要使用log4j能夠?yàn)槲覀儙肀憷吞岣咝省O旅嬷饕腿绾慰焖俸侠淼氖褂胠og4j做一下介紹。(有不對的地方,請大家指正)
Log4j中有三個(gè)主要的組件,它們分別是 Logger、Appender和Layout,Log4j 允許開發(fā)人員定義多個(gè)Logger,每個(gè)Logger擁有自己的名字,Logger之間通過名字來表明隸屬關(guān)系。有一個(gè)Logger稱為Root,它永遠(yuǎn)存在,且不能通過名字檢索或引用,可以通過Logger.getRootLogger()方法獲得,其它Logger通過Logger.getLogger(String name)或Logger.getLogger(Class clazz)方法獲得。
Appender則是用來指明將所有的log信息存放到什么地方,Log4j中支持多種appender,如 console、files、GUI components、NT Event Loggers等,一個(gè)Logger可以擁有多個(gè)Appender,也就是你既可以將Log信息輸出到控臺屏幕,同時(shí)存儲到一個(gè)文件中。
Layout的作用是控制Log信息的輸出方式,也就是格式化輸出的信息。
Log4j中將要輸出的Log信息定義了5種級別,級別依次從低到高為DEBUG、INFO、WARN、ERROR和FATAL,當(dāng)輸出時(shí),只有級別高過或等于配置中規(guī)定的級別時(shí)信息才能真正的輸出,如果配置OFF則不打出任何信息,假設(shè)Loggers級別為P,如果在Loggers中發(fā)生了一個(gè)級別Q比P高,則可以啟動,否則屏蔽掉。假設(shè)你定義的級別是info,那么error和warn的日志可以顯示而比他低的debug信息就不顯示了。這樣就很方便的來配置不同情況下要輸出的內(nèi)容,而不需要更改代碼。(這點(diǎn)實(shí)在是方便啊。我們不用再使用system.out 在項(xiàng)目運(yùn)用時(shí)還要去掉大量的system.out)
log4j 有兩種配置方法,大家熟知的是properties文件但是最近的項(xiàng)目實(shí)施中,每次去用戶那里裝系統(tǒng),都要苦惱于log文件放在不同位置,要改property文件就要重打jar包,麻煩的緊。而如果采用 xml配置的方法,直接放在WEB-INFO下,要修改路徑,很方便。查了些資料,終于把系統(tǒng)的log4j改成在xml中配置啦。
使用步驟為:第一步:加入log4j-1.2.8.jar到lib下。第二步:在CLASSPATH下建立log4j.properties。第三步:在代碼中使用