Log4j是Apache基金會的一個項目,它能爲Java開發着提供功能強大使用方便的各種日誌處理.當然它的版本不限於Java,還有C/C++等主流語言.我覺得它就象一把非常實用的鋒利小刀,讓我們的寫程序時更加如魚得水.
Log4j輸出的信息分如下幾類:ALL,DEBUG,INFO,ERROR,FATAL,級別從低到高,輸出的內容是從多到少.從字面意思即可看出大概,ALL指輸出所有信息;DEBUG指調試信息;INFO指一般信息;ERROR指錯誤信息;FATAL指致命的錯誤信息。 輸出的信息級別和內容我們可以在程序裏面設置,但缺點就不夠靈活,並且無法在程序運行期間進行參數調整。通過XML或Property配置文件可以在外部控制Logger的輸出,原理都一樣的,只是表現形式不一樣,看個人的習慣了。下面主要講一下如何使用Property文件來靈活配置Log4j的輸出。 在Log4j中你可以讓信息輸出到控制檯(Console)、文件、遠程數據數等中的其中一個或多個當中。 首先我們要先聲明信息輸出的級別,並且 爲了能把信息輸出到指定的目的地,我們要指定輸出方案,如下所示: log4j.rootLogger = DEBUG, A1,A4 DEBUG爲輸出信息的級別,A1,A4分別爲輸出方案的名稱,下面我們來定義方案的具體參數。 指定該輸出方案的信息輸出目的地爲控制檯: log4j.appender.A1 = org.apache.log4j.ConsoleAppender 設定輸出的佈局爲模式佈局: 指定模式的具體參數: 每個參數前要加%來說明,其中: %d:日期(date),如:yyyy-MM-dd,yyyy-MM-dd HH:mm:ss等 %t:線程名稱(Thread) %-5p:信息優先級(Priority),寬度爲5,左對齊。如DEBUG,FATAL等 %m:輸出信息(Message) %n:回車換行 還有其它幾個象%c,%C,%F等 上面的方案A1指的是把信息輸出到控制檯,並且輸出的格式按指定的格式輸出。 我們還可以指定把信息輸出到文件當中,如下爲普通文件輸出方案: log4j.appender.A2 = org.apache.log4j.RollingFileAppender 輸出指定的文件test.log當中,並且指定該文件最大不超過1MB,超過之後將清除後再寫入。當然也可以直接用FileAppender,不進行Rolling,那麼所以的日誌信息都將追加到原信息的後面。MaxBackupIndex指的是最大備份數目。以上面文件爲例,當test.log到達1MB,則它直接被修改成test.log.1,如果這個文件已存在,則修改爲test.log.2,直到MaxBackupIndex。新的日誌信息,將重新生成文件test.log。當下一次達到1MB時,此時test.log.1,test.log.2,test.log.3都已存在,則直接把test.log.3刪除,把test.log修改成test.log.3。 把信息輸出到遠程數據庫當中: # 定義A3輸出到數據庫 指定輸出方案爲JDBCAppender,即能過JDBC把日誌自動寫入到遠程數據庫當中。BufferSize指定緩衝區的大小,當輸出內容達到緩衝區的大小時,就把數據寫入數據庫一次。下面的參數依次爲指暄數據庫驅動名稱、數據庫URL地址、數據庫登錄用戶名和密碼,模式佈局和Select語句。 我們也可以把信息輸出到HTML文件當中,並且是按時間段自動生成文件,比如,每隔一個小時或一天、半天生成一個HTML文件: log4j.appender.A4 = org.apache.log4j.DailyRollingFileAppender 第一個參數爲指定輸出方案爲按日期滾動的文件方案。第二個參數指定文件名,第三個指定日期模式,最後一個指定佈局爲HTML佈局。上面的設置會每隔一個小時產生一個HTML文件名,文件名爲:log.html.2006-03-24-08.html的樣子。 完整的配置文件log4j.properties如下: log4j.rootLogger = DEBUG, A1,A4 log4j.appender.A1 = org.apache.log4j.ConsoleAppender
#11區 定義A3輸出到數據庫
在程序裏面只需聲明使用Property配置文件來控制輸出就行了,如下所示: static Logger logger = Logger.getLogger(DHMain.class); public static void main(String[] args) { } 有了Log4j,我們完全可以拋棄System.out了,用它吃力又不討好,何苦呢? |
用Log4j自動生成日誌(多種方式)輸出到文件、數據庫等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.