Log4j簡(jiǎn)介
? ? ? ?Log4j是Apache的一個(gè)開(kāi)放源代碼項(xiàng)目,通過(guò)使用Log4j舶担,我們可以控制日志信息輸送的目的地是控制臺(tái)坡疼、文件、GUI組件衣陶、甚至是套接口服務(wù)器柄瑰、NT的事件記錄器、UNIX Syslog守護(hù)進(jìn)程等剪况;我們也可以控制每一條日志的輸出格式教沾;通過(guò)定義每一條日志信息的級(jí)別,我們能夠更加細(xì)致地控制日志的生成過(guò)程译断。最令人感興趣的就是授翻,這些可以通過(guò)一個(gè)配置文件來(lái)靈活地進(jìn)行配置,而不需要修改應(yīng)用的代碼孙咪。
以Java項(xiàng)目為例介紹log4j配置步驟
工程結(jié)構(gòu)如下:
1.添加log4j相關(guān)jar包(maven)
<!--添加log4j相關(guān)jar包-->
<dependency>
? ? <groupId>log4j</groupId>
? ? <artifactId>log4j</artifactId>
? ? <version>1.2.16</version>
</dependency>
2.log4j.properties配置
#日志配置
log4j.rootLogger = DEBUG,stdout,file
#控制臺(tái)輸出
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.Threshold=DEBUG
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}[ %p ]%m%n
#所有文件輸出
log4j.appender.file = org.apache.log4j.FileAppender
log4j.appender.file.File = D:/logs/log.log
log4j.appender.file.Encoding=UTF-8log4j.appender.file.name = fileLogDemo
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c {Num}] [%l] [ %t:%r ] - [ %p ]? %m%n
log4j.appender.file.append =true
3.測(cè)試類
import org.apache.log4j.Logger;
public
class log4jTest {
? ? //獲取日志記錄器Logger堪唐,名字為本類類名privatestaticLogger logger = Logger.getLogger(log4jTest.class);
? ? publicstaticvoid main(String[] args) {
? ? ? ? for(inti=0;i<3;i++){
? ? ? ? ? ? // 記錄debug級(jí)別的信息logger.debug("log4j日志輸出:This is debug message.");
? ? ? ? ? ? // 記錄info級(jí)別的信息logger.info("log4j日志輸出:This is info message.");
? ? ? ? ? ? // 記錄error級(jí)別的信息logger.error("log4j日志輸出:This is error message.");
? ? ? ? }
? ? }
}
控制臺(tái)輸出結(jié)果
日志文件輸出結(jié)果
log4j配置說(shuō)明
log4j包含三個(gè)組件,分別是 Logger(記錄器)、Appender(輸出目的地)翎蹈、Layout(日志布局)淮菠。可分別簡(jiǎn)單理解為"日志類別"荤堪、"日志要輸出的地方"和"日志以何種形式輸出"合陵。
1、配置Logger記錄器
log4j.rootLogger = [ level ] , appenderName, appenderName, …
level表示日志記錄的優(yōu)先級(jí)逞力,分為OFF曙寡、FATAL糠爬、ERROR寇荧、WARN、INFO执隧、DEBUG揩抡、ALL或者你定義的級(jí)別。
Log4j建議使用四個(gè)級(jí)別镀琉,優(yōu)先級(jí)從高到低分別是ERROR峦嗤、WARN、INFO屋摔、DEBUG烁设。
通過(guò)在這里定義的級(jí)別,你可以控制到應(yīng)用程序中相應(yīng)級(jí)別的日志信息的開(kāi)關(guān)。比如在這里定義了INFO級(jí)別装黑,則應(yīng)用程序中所有DEBUG級(jí)別的日志信息將不被打印出來(lái)副瀑。
appenderName就是指日志輸出的目的。你可以靈活地定義日志輸出恋谭,也可以同時(shí)指定多個(gè)輸出目的地糠睡。
Log4j配置文件實(shí)現(xiàn)了輸出到控制臺(tái)、文件疚颊、回滾文件狈孔、發(fā)送日志郵件、輸出到數(shù)據(jù)庫(kù)日志表材义、自定義標(biāo)簽等全套功能均抽。
2、配置Appender輸出目的地
輸出目的地類型:
org.apache.log4j.ConsoleAppender(控制臺(tái))母截,?
org.apache.log4j.FileAppender(文件)到忽,?
org.apache.log4j.DailyRollingFileAppender(每天產(chǎn)生一個(gè)日志文件),?
org.apache.log4j.RollingFileAppender(文件大小到達(dá)指定尺寸的時(shí)候產(chǎn)生一個(gè)新的文件)清寇,?
org.apache.log4j.WriterAppender(將日志信息以流格式發(fā)送到任意指定的地方)
3喘漏、配置layout日志布局
org.apache.log4j.HTMLLayout(HTML表格形式)
org.apache.log4j.SimpleLayout(簡(jiǎn)單格式的日志,只包括日志信息的級(jí)別和指定的信息字符串 华烟,如:DEBUG - Hello)
org.apache.log4j.TTCCLayout(日志的格式包括日志產(chǎn)生的時(shí)間翩迈、線程、類別等等信息)
org.apache.log4j.PatternLayout(靈活地自定義日志格式)
使用org.apache.log4j.PatternLayout來(lái)自定義信息格式時(shí)盔夜,可以使用ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss} [%c {Num}] [%l] [ %t:%r ] - [ %p ]??%m%n 來(lái)格式化信息
%c 輸出所屬類的全名负饲,可寫(xiě)為 %c{Num} ,Num類名輸出的范圍 如:"com.sun.aaa.classB",%C{2}將使日志輸出輸出范圍為:aaa.classB%d 輸出日志時(shí)間其格式為 可指定格式 如 %d{HH:mm:ss}等%l 輸出日志事件發(fā)生位置,包括類目名喂链、發(fā)生線程返十,在代碼中的行數(shù)%n 換行符%m 輸出代碼指定信息,如info(“message”),輸出message%p 輸出日志的優(yōu)先級(jí)椭微,即 FATAL ,ERROR 等%r 輸出從啟動(dòng)到顯示該條日志信息所耗費(fèi)的時(shí)間(毫秒數(shù))%t 輸出產(chǎn)生該日志事件的線程名