注:今天可貴悠閒,學了下log4j,參考博文 http://www.cnblogs.com/pony/archive/2008/08/25/1275484.html ,文字部分基本上來自該博文,我只是配了幾個結構圖html
一)Log4j簡介: 服務器
Log4j是Apache的一個開放源代碼項目,經過使用Log4j,咱們能夠控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;咱們也能夠控制每一條日誌的輸出格式;經過定義每一條日誌信息的級別,咱們可以更加細緻地控制日誌的生成過程。最使人感興趣的就是,這些能夠經過一個配置文件來靈活地進行配置,而不須要修改應用的代碼。
此外,經過Log4j其餘語言接口,您能夠在C、C++、.Net、PL/SQL程序中使用Log4j,其語法和用法與在Java程序中同樣,使得多語言分佈式系統獲得一個統一一致的日誌組件模塊。並且,經過使用各類第三方擴展,您能夠很方便地將Log4j集成到J2EE、JINI甚至是SNMP應用中。app
二)Log4j模塊圖分佈式
三)日誌器函數
Logger 負責處理日誌記錄的大部分操做。
其語法爲:@1
log4j.rootLogger= [ level ] , appenderName1, appenderName2, ...佈局
其中,rootLogger日誌器名,可隨意取名,level 是日誌記錄的優先級,分爲OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者自定義的級別。Log4j建議只使用四個級別,優先級從高到低分別是ERROR、WARN、INFO、DEBUG。經過在這裏定義的級別,您能夠控制到應用程序中相應級別的日誌信息的開關。好比在這裏定義了INFO級別,只有等於及高於這個級別的才進行處理,則應用程序中全部DEBUG級別的日誌信息將不被打印出來。ALL:打印全部的日誌,OFF:關閉全部的日誌輸出。 appenderName指定輸出器就是指定日誌信息輸出到哪一個地方。可同時指定多個輸出目的地。spa
四)輸出器開放源代碼
Appender 負責控制日誌記錄操做的輸出,
其語法爲:
log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1
…
log4j.appender.appenderName.optionN = valueN
這裏的appenderName爲在日誌器配置@1裏定義的,可任意起名。
其中,Log4j提供的appender有如下幾種: 線程
五)佈局器日誌
Layout 負責格式化Appender的輸出。
其語法爲:
log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1
…
log4j.appender.appenderName.layout.optionN = valueN
佈局器包含如下幾種
輸出格式:
格式化日誌信息
Log4J採用相似C語言中的printf函數的打印格式格式化日誌信息,打印參數以下:
%m 輸出代碼中指定的消息
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數
%c 輸出所屬的類目,一般就是所在類的全名
%t 輸出產生該日誌事件的線程名
%n 輸出一個回車換行符,Windows平臺爲「rn」,Unix平臺爲「n」
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也能夠在其後指定格式,好比:%d{yyyy MMM dd HH:mm:ss,SSS},輸出相似:2002年10月18日 22:10:28,921
%l 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。