Lo4j的下載地:http://logging.apache.org/log4j/
下載載Lo4j後,解壓縮並將jar包放在classpath中,web項目,則放在WEB-INF/lib目錄下,井添加到classpath。Log4j默認配置文件爲log4j.properties。啓動時會加載classpath下的log4j.properties初始化Log4j,如果文件不存在則會提示沒有找到log4j配置。
要使用Log4j,首先需配置Log4j,即指定Log4j的日誌輸出位置、輸出格式、輸出優先級等信息,然後在程序中獲取Logger,之後系統即可自動根據配置文件中指定的日誌輸出位置、輸出格式、輸出優先級來記錄日誌。
一、配置根Logger
配置根Logger,其語法爲:
Log4j.rootLogger = [level],appenderName,appenderName...
代碼說明:
level是日誌記錄的類別,類別分爲5種級別:FATAL,ERROR,WARN,INFO,DEBUG。常用的優先級爲:FATAL>ERROR>WARN>INFO>DEBUG。
如果Iog4j.rootLogger=WARN,則意味着只有WARN. ERROR和FATAL級別的日誌被輸出。INFO和DEBUG級別的日誌將被隱藏。
appenderName:是指日誌輸出到哪個地方。可以同時指定多個輸出目的地。
二、指定日誌輸出位置
每個Logger都可以指定一個或者多個appenderName。 Log4j定義了很多種輸出位置的方式:
ConsoleAppender :輸出日誌到控制檯
FileAppender :輸出日誌到文件
DailyROIlingFileAppender :擴展FileAppender 每天產生一個日誌文件
RollingFileAppender : 擴展FileAppender備份容址達到一定大小的日誌文件
WriterAppender :將日誌信息以流格式發送到任意指定的地方
JDBCAppender :輸出日誌到數據庫
SMTPAppender :把日誌發送至郵件
下面將對這幾種輸出進行舉例說明:
(1)ConsoleAppender輸出日誌到控制檯
#指定輸出到控制檯
log4j.appender.A1=org.apache.log4j.ConsoleAppender
#指定輸出級別
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.Target=System.out
#指定輸出佈局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
(2)FileAppender :輸出日誌到文件
#指定輸出到文件
log4j.appender.A1=org.apache.log4j.FileAppender
#指定輸出的路徑及文件名
log4j.appender.FILE.File=file.log
log4j.appender.FILE.Append=false
#指定輸出佈局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
(3)RollingFileAppender : 擴展FileAppender備份容址達到一定大小的日誌文件
log4j.appender.A1=org.apache.log4j.RollingFileAppender
#指定輸出的路徑及文件名
log4j.appender.A1.File=file.log
#文件大小
log4j.appender.A1.MaxFileSize=500KB
log4j.appender.A1.MaxBackupIndex=50
log4j.appender.FILE.Append=true
#指定輸出佈局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
(4)JDBCAppender :輸出日誌到數據庫
log4j.appender.A1=org.apache.log4j.JDBCAppender
#數據庫URL
log4j.appender.A1.URL=jdbc:mysql://localhost:3306/mylog
#數據庫Driver
log4j.appender.A1.driver=com.mysql.jdbc.Driver
#數據庫用戶
log4j.appender.A1.user=root
#數據庫密碼
log4j.appender.A1.password=root
#SQL語句
log4j.appender.A1.sql=insert into tb_log (message) values ([%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n)
(5)SMTPAppender :把日誌發送至郵件
log4j.appender.A1=org.apache.log4j.SMTPAppender
#指定輸出級別
log4j.appender.A1.Threshold=FATAL
log4j.appender.A1.BufferSize=10
#發件人
[email protected]
#SMTP服務器
log4j.appender.A1.SMTPHost=mail.javajdk.cn
log4j.appender.A1.Subject=Log4j Message
#收件人
[email protected]
#指定輸出佈局
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss} %c - %m%n
三、指定日誌輸出格式
在前面的示例中可以看到,每個日誌輸出項在配置時,都指定了相應的日誌輸出格式。Log4j指定的日誌輸出格式主要有以下幾種:
(1)HTMLLayout :格式化日誌輸出爲HTML表格
(2)PanemLayout :可以靈活地指定佈局模式。
(3)SimpleLayout :輸出的日誌信息包含日誌的級別
(4)TTCCLayout :包含日誌產生的時問、線程、類別等信息
Log4j的格式化信息輸出格式如下:
(1)-x號 : x信息輸出時左對齊
(2)%m : 輸出代碼中指定的消息
(3)%p : 輸出優先級,即DEBUG,INF0,WARN,ERROR,FATAL
(4)%r : 輸出自應用啓動到輸出該log信息耗費的毫秒數
(5)%c : 輸出所屬的類目,通常就是所在類的全名
(6)%t : 輸出產生該日誌事件的線程名
(7)%n : 輸出一個回車換行符,Windows平臺爲“\r\n” Unix平臺爲“\n”
(8)%d : 輸出日誌時間點的日期或時間,默認格式爲IS08601,也可以在其後指定格式,如:%d{yyyy-MMM-dd HH:mm:ss.SSS}
(9)%l : 輸出日誌事件的發生位置,包括類目名、發生的線程,以及在代碼中的行數。
四、指定日誌輸出優先級
Log4j共定義了5種日誌輸出優先級別,按照由高到低排列:
FATAL : 對應level爲1,使用方法Logger.Fatal()。
ERROR : 對應level爲3,使用方法logger.error()。
WARN : 對應level爲4,使用方法logger.warn()。
INFO : 對應level爲6,使用方法logger.info()。
DEBUG : 對應level爲7,使用方法lopger.debug()。
注意:定義的級別越高,則較低級別的日誌將不會輸出。