Java web中使用Log4j記錄日誌資訊
阿新 • • 發佈:2019-01-30
最近想記錄一下Log4j的使用,抽了點時間通過收集網上的資料整理了這份部落格,希望給需要用Log4j記錄日誌的朋友一點幫助,若有不對的地方,望指正。 Log4j是Apache的一個開源專案,通過使用Log4j,我們可以控制日誌資訊輸送的目的地是控制檯、檔案GUI組建,甚至是套介面伺服器、NT的事件記錄器、UNIX Syslog守護程序等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌的資訊級別,我們能夠更加細緻地控制日誌的生成過程。(摘自百度百科) Apache的Log4j主要包括三個部分。在應用中要使用Log4j來記錄日誌,首先要知道這三個部分的作用,才知道如何去配置Log4j來記錄日誌。這三部分分別是:日誌資訊的優先順序、日誌資訊的輸入目的地和日誌資訊的輸出格式。下面就這三部分進行一個介紹,然後在最後給出一些例子講解如何配置Log4j。 一、日誌級別 日誌級別,是告訴Log4j什麼樣級別的日誌資訊才被記錄,主要包括以下幾個級別(級別依次由低到高): ALL:各級別包括自定義的級別; DEBUG:一般用在細粒度上,對除錯應用程式非常有幫助; INFO:一般用在細粒度上,強調應用程式的執行全程; WARN:指定具有潛在危害的情況; ERROR:指定雖然發生錯誤事件,但任然不影響系統執行; FATAL:指定非常嚴重的錯誤事件,可能會導致應用程式終止; OFF:最高的級別,指定關閉日誌記錄所有功能。 二、日誌資訊輸出目的地 日誌資訊輸出目的地,指定Log4j記錄的日誌資訊輸出到哪裡。在日常的開發中,比較常用的有以下幾種: 1、org.apache.log4j.ConsoleAppender(控制檯): 可配置屬性: Threshold:指定日誌訊息輸出的最低級別 InnediateFlush:日誌訊息是否立即輸出,預設為true Target:指定由誰輸出,預設是System.out 2、org.apache.log4j.FileAppender(檔案): 可配置屬性: Threshold:指定日誌訊息輸出的最低級別 encoding:可以指定任何字元編碼,預設是特定平臺的編碼方案 InnediateFlush:日誌訊息是否立即輸出,預設為true File:指定日誌輸出到那個檔案 Append:指定日誌資訊是否是追加方式輸出到檔案中,預設為true 3、org.apache.log4j.RollingFileAppender(指定日誌檔案到達一定的大小之後產生一個新檔案): 該配置繼承與FileAppender,除了包括FileAppender可配置屬性外,還包括以下屬性: MaxFileSize:指定日誌檔案到達一定的大小後,新產生一個檔案,可以指定單位有KB/MB/GB MaxBackupIndex:指定可以新產生多少個檔案 4、org.appche.log4j.DailyRollingFileAppender(每天產生一個日誌檔案): 該配置繼承與FileAppender,除了包括FileAppender可配置屬性外,還包括以下屬性: DatePattern:指定在什麼時候產生一個新的日誌檔案,預設是0點,可指定的格式: '.'yyyy-MM:每個月的結束和下個月初 '.'yyyy-MM-dd:預設值,每天0點 '.'yyyy-MM-dd-a:每天0點和12點 '.'yyyy-MM-dd-HH:每小時 '.'yyyy-MM-dd-HH-mm:每分鐘 '.'yyyy-ww:每個星期的第一天 5、org.apache.log4j.jdbc.JDBCAppender(記錄日誌資訊到資料庫): 可配置屬性: bufferSize:設定緩衝區的大小,預設為1 driver:設定資料庫驅動 layout:設定日誌使用的佈局,預設是org.apache.log4j.PatternLayout sql:指定語句在每次記錄事件發生的時間執行,可以是insert/update/delete url:設定jdbc url user:設定資料庫使用者名稱 password:資料庫密碼 三、日誌資訊輸出格式 可配置的輸出格式有以下幾種: 1、org.apache.log4j.HTMLLayout(以HTML表格形式佈局) 2、org.apache.log4j.PatternLayout(可以靈活指定佈局格式) 3、org.apache.log4j.SimpleLayout(包含日誌的級別和資訊字串) 4、org.apache.log4j.TTCCLayout(包含日誌產生的時間、執行緒、類別等資訊) 通過以上的可配置佈局,還需要指定org.appender.appendName.layout.ConversionPattern屬性的具體格式,這裡以一個例子說明: log4j.appender.R.layout.ConversionPattern=%-4r %-5p %d{yyyy-MM-dd HH:mm:ss} %c %m%n 具體配置項如下說明: -X:日誌資訊輸入左對齊 %p:輸出日誌的級別 %d:指定日期的輸出格式 %r:輸出自應用啟動到輸出該log資訊耗費的毫秒數 %c:輸出日誌資訊所屬的類目,通常就是類全名 %t:輸出產生該日誌時間的執行緒名 %l:輸出日誌事件的發生位置,包括類名、發生的執行緒以及在程式碼中的行數 %x:輸出和當前執行緒相關聯的巢狀診斷環境 %%:輸出一個“%” %F:輸出日誌訊息產生是所在的檔名稱 %L:輸出程式碼中的行號 %m:輸出程式碼中指定的日誌資訊 %n:輸出一個回車換行符 介紹完Log4j的三個部分的常用配置,下面結合例子來展示一下真實環境中的配置例子: 1、下載Log4j,下載完後把jar包拷到lib目錄下 下載地址:http://logging.apache.org/log4j/1.2/download.html 2、編寫配置檔案,並把檔案加入到classpath中:
3、在web.xml中配置啟動伺服器時啟動Log4j
4、在程式碼中載入Log4j配置資訊:
通過以上4個步驟,那麼Log4j的環境就算搭建完成了。由於是基於java web搭建的Log4j,所以需要啟動伺服器來進行測試。這裡我以執行一個sql為例子,下圖是在某一段程式碼中使用了Log4j記錄日誌:
控制檯輸入日誌:
日誌檔案輸出: