Log4j是幫助開發人員進行日誌輸出管理的API類庫。它最重要的特色就能夠配置文件靈活的設置日誌信息的優先級、日誌信息的輸出目的地以及日誌信息的輸出格式。Log4j除了能夠記錄程序運行日誌信息外還有一重要的功能就是用來顯示調試信息。不少程序員常常會使用System.out.println語句輸出某個變量值的方法進行調試。這樣會帶來一個很是麻煩的問題:一旦哪天程序員決定不要顯示這些System.out.println的東西了就只能一行行的把這些語句註釋掉。若哪天又需調試變量值,則只能再 一行行去掉這些註釋恢復System.out.println語句。使用log4j能夠很好的處理相似狀況:使用"DEBUG"等級輸出會相似System.out.println,開發後期不須要輸出調試時能夠把等級根據須要調高,如調到"ERROR"等級,只有出錯錯誤時才輸出。html
在apache網站:jakarta.apache.org/log4j能夠免費下載到Log4j最新版本的軟件包。程序員
使用步驟分爲3步:apache
目錄結構以下:app
1. 加入log4j的jar包。網站
2. 在項目根目錄下添加配置文件log4j.properties(能夠修改第一行代碼來設置等級和格式)spa
#設置logger級別DEBUG、INFO、WRNING、ERROR和輸出格式A、B、C或D
log4j.rootLogger=DEBUG, A
#輸出到控制檯
log4j.appender.A=org.apache.log4j.ConsoleAppender
log4j.appender.A.layout=org.apache.log4j.PatternLayout
log4j.appender.A.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%c]-[%p] %m%n
#輸出到E盤的log.log文件
log4j.appender.B=org.apache.log4j.FileAppender
log4j.appender.B.File=E:\\log.log
log4j.appender.B.layout=org.apache.log4j.SimpleLayout
#輸出到E盤的log.html文件
log4j.appender.C=org.apache.log4j.RollingFileAppender
log4j.appender.C.File=E:\\log.html
log4j.appender.C.MaxFileSize=1000KB
log4j.appender.C.MaxBackupIndex=10
log4j.appender.C.layout=org.apache.log4j.HTMLLayout
log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File=E:\\log.log
log4j.appender.D.layout=org.apache.log4j.TTCCLayout
3. 建立日誌記錄器來使用.net
package testLog4j; import org.apache.log4j.Logger; public class Test { //獲取日誌記錄器Logger,名字爲本類類名 private static Logger log = Logger.getLogger(Test.class); public static void main(String[] args) { for(int i=0;i<10;i++){ log.debug("HellWord"); } } }
輸出結果以下:線程
Log4j由三個重要的組件構成:日誌信息的優先級,日誌信息的輸出目的地,日誌信息的輸出格式。日誌信息的優先級從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌信息的重要程度,好比使用DEBUG,則會包括前面3個,也就是所有都包括,使用INFO,則不包括DEBUG;日誌信息的輸出目的地指定了日誌將打印到控制檯仍是文件中;而輸出格式則控制了日誌信息的顯示內容。debug
1. 配置log輸出目的地:調試
org.apache.log4j.ConsoleAppender(控制檯)
org.apache.log4j.FileAppender(文件)
org.apache.log4j.DailyRollingFileAppender(天天產生一個日誌文件)
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件)
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)
2. log信息的格式:
org.apache.log4j.HTMLLayout(HTML表格形式)
org.apache.log4j.SimpleLayout(簡單格式的日誌,只包括日誌信息的級別和指定的信息字符串 ,如:DEBUG - Hello)
org.apache.log4j.TTCCLayout(日誌的格式包括日誌產生的時間、線程、類別等等信息)
org.apache.log4j.PatternLayout(靈活地自定義日誌格式)
當使用org.apache.log4j.PatternLayout來自定義信息格式時,能夠使用log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:ss} %p-%m%n 來格式化信息
%c 輸出所屬類的全名,可寫爲 %c{Num} ,Num類名輸出的範圍 如:"com.sun.aaa.classB",%C{2}將使日誌輸出輸出範圍爲:aaa.classB
%d 輸出日誌時間其格式爲 可指定格式 如 %d{HH:mm:ss}等
%l 輸出日誌事件發生位置,包括類目名、發生線程,在代碼中的行數
%n 換行符
%m 輸出代碼指定信息,如info(「message」),輸出message
%p 輸出日誌的優先級,即 FATAL ,ERROR 等
%r 輸出從啓動到顯示該條日誌信息所耗費的時間(毫秒數)
%t 輸出產生該日誌事件的線程名