Log4j配置詳解

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()。

注意:定義的級別越高,則較低級別的日誌將不會輸出。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章