記下依賴包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
log4j 有三個(gè)核心功能
- 日志信息的優(yōu)先級(jí)
- 日志信息的輸出目的地
- 日志輸出的格式
而使用配置文件不僅會(huì)減輕工作量官套,而且可以使程序更加靈活
定義配置文件主要有兩種方式
- 使用 Java 的特性文件,即右鍵工程名 new 一個(gè)名為 log4j.properties 的文件
這個(gè)文件不同的 IDE贮缕,不同的項(xiàng)目放在不同的地方,有人說 src 同級(jí), 也有人說
在 src/main/java 下,還有人說放在 src/main/resource胆胰。具體對(duì)象,具體討論
- 使用 xml 文件刻获,具體怎么配置蜀涨,我還沒有試過。
語(yǔ)法
1.根類別(在類別層次的頂部蝎毡,即全局性的日志級(jí)別)
配置根 Logger
log4j.rootLogger = [ level ], appenderName, appenderName,...
- level 是日志記錄的類別
從高到低依次排序
關(guān)鍵字 | 用途 |
---|---|
OFF | 最高級(jí)別厚柳,關(guān)閉所有日志 |
FATAL | 每個(gè)錯(cuò)誤事件將會(huì)導(dǎo)致退出應(yīng)用程序,這個(gè)時(shí)候可以停止應(yīng)用程序了 |
ERROR | 雖然發(fā)生錯(cuò)誤事件沐兵,但是不影響系統(tǒng)的繼續(xù)運(yùn)行别垮。打印錯(cuò)誤異常和信息,如果不需要打印太多扎谎,可以使用這個(gè)級(jí)別 |
WARN | 會(huì)出現(xiàn)潛在錯(cuò)誤信息碳想,有些信息不是錯(cuò)誤信息烧董,但是需要給程序員一些提示 |
INFO | 消息在粗粒度級(jí)別上突出強(qiáng)調(diào)應(yīng)用程序的運(yùn)行過程,打印一些感興趣或者重要的信息胧奔。這個(gè)可以用于生產(chǎn)環(huán)境中輸出程序的一些重要信息逊移,但是不能濫用 |
DEBUG | 指出細(xì)粒度事件對(duì)于調(diào)試還是費(fèi)城有幫助的,主要打印一些在開發(fā)過程中打印一些運(yùn)行信息 |
TRACE | 很低級(jí)別的日志龙填,一般不會(huì)用 |
ALL | 級(jí)別最低胳泉,打印所有日志 |
log4j 推薦只使用 ERROR, WARN, INFO, DEBUG
通過定義級(jí)別,只有比這個(gè)高的級(jí)別可以打印出來
- appenderName 指定日志發(fā)送到哪個(gè)地方岩遗,可以同時(shí)指定多個(gè)輸出地
例如:
log4j.rootLogger=INFO,stdout,Runlog,Errorlog
DEBUG 級(jí)別日志將會(huì)被屏蔽扇商,輸出的目的地有三個(gè), stdout 喘先、Runlog 和 Errorlog
2.配置日志的目的地
- log4j.appender.appenderName = fully.qualified.name.of.appender.class
fully.qualifled.name.of.appender.class 是你日志發(fā)送目的地的類型
樣式是:org.apache.log4j.XXXXXX
這里說幾個(gè)常用的
XXXXXX | 類型 | 實(shí)際使用 |
---|---|---|
ConsoleAppender | 控制臺(tái) | |
FileAppender | 文件 | |
DailyRollingFileAppender | 每天產(chǎn)生一個(gè)文件 | 當(dāng)天之后日志文件就會(huì)被以xxx+昨天的日期來命名钳吟,也就是每天一個(gè)日志文件 |
RollingFileAppender | 文件到達(dá)指定大小產(chǎn)生一個(gè)新文件 | 當(dāng)日志文件到底指定尺寸時(shí),那么原來的日志文件將會(huì)被加上序號(hào)窘拯,例如xxx.1,值得注意的是红且,若是再超過指定尺寸(MaxFileSize)需要增加一個(gè)日志文件時(shí),那么原來xxx.1的文件會(huì)加上1變成xxx.2涤姊。也就是說暇番,數(shù)字越大的日志文件記錄的日志時(shí)間越早! |
WriterAppender | 將日志以流的形式發(fā)送到任意指定地方 | ConsoleAppender和FileAppender的父類思喊,一般不直接使用壁酬,而是會(huì)使用其子類,如ConsoleAppender |
net.SMTPAppender | 郵件 | |
jdbc.JDBCAppender | 數(shù)據(jù)庫(kù) |
還有一些:GUI組件恨课,套接口服務(wù)器舆乔,NT 時(shí)間記錄器,UNIX Syslog 守護(hù)進(jìn)程等剂公。
3.常用的輸出格式
格式 | 意義 |
---|---|
-X號(hào) | X 信息輸出是左對(duì)齊 |
%p | 日志輸出信息級(jí)別 |
%d{} | 日志信息產(chǎn)生的信息 |
%c | 日志信息產(chǎn)生的所在類名 |
%m | 日志產(chǎn)生的具體信息 |
%n | 輸出日志信息換行 |
例如:
這個(gè)我相信不解釋大家也能看得懂
log4j.appender.stdout.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Runlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
log4j.appender.Errorlog.layout.ConversionPattern= %5p %d{yyyy-MM-dd HH:mm:ss} %c %m %n
4.布局
log4j 提供四種布局
布局 | 形式 |
---|---|
org.apache.log4j.HTMLLayout | 以HTML表格形式布局 |
org.apache.log4j.PatternLayout | 可以靈活地指定布局模式 |
org.apache.log4j.SimpleLayout | 包含日志信息的級(jí)別和信息字符串 |
org.apache.log4j.TTCCLayout | 包含日志產(chǎn)生的時(shí)間希俩、線程、類別等等信息 |
例如:
log4j.appender.stdout.layout=org.apache.log4j.HTMLLayout
這里給大家推薦一篇非常好的博客
Log4j擴(kuò)展使用--輸出地Appender
參考資料:
log4j的8個(gè)日志級(jí)別(OFF纲辽、FATAL颜武、ERROR、WARN拖吼、INFO鳞上、DEBUG、TRACE吊档、 ALL)
Log4j輸出終端(Appender)詳解