轉載 。 https://blog.csdn.net/TheBlackbeard/article/details/70256058
1、log4j實驗示例
在eclipse中新建一個java project如下:
其中TestLog4j.java代碼如下:
package cn.zhoucy.test;
import org.apache.log4j.Logger;
public class TestLog4j {
private static Logger logger=Logger.getLogger(TestLog4j.class); // 獲取logger實例
public static void main(String[] args) {
logger.debug("調試debug信息");
logger.info("普通Info信息");
logger.warn("警告warn信息");
logger.error("error信息");
logger.fatal("嚴重錯誤fatal信息");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
其中配置文件log4j.properties如下:
log4j.rootLogger=DEBUG, Console ,DFile ,EFILE
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.TTCCLayout
#DEBUGFile
log4j.appender.DFile = org.apache.log4j.FileAppender
log4j.appender.DFile.File = E://DEBUG.log
log4j.appender.DFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.appender.DFile.Threshold = DEBUG
log4j.appender.DFile.Append = false
#ERRORFile
log4j.appender.EFILE = org.apache.log4j.FileAppender
log4j.appender.EFILE.File = E://ERROR.log
log4j.appender.EFILE.layout = org.apache.log4j.PatternLayout
log4j.appender.EFILE.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.appender.EFILE.Threshold = ERROR
運行以後,控制檯輸出:
然後到E盤根目錄下查看,有兩個文件生成:
其中DEBUG.log中內容如下:
ERROR.log內容如下:
2、log4j.properties文件詳解
在整個含有log4j的工程中,所有的配置都通過log4j.properties配置文件來實現,以上面的例子來展開。
2.1、Log4j日誌等級
Log4j根據日誌信息的重要程度,分爲:
OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL
FATAL是致命錯誤;ERROR是錯誤;WARN是警告;INFO就是一般信息;DEBUG是調試信息。
其中,OFF表示什麼也不記錄;ALL表示全紀錄,這兩個一般都不使用。
比如說,日誌信息的設定爲INFO,那麼log4j將會記錄下FATAL、ERROR、WARN、INFO這幾個級別的信息。
2.2、配置文件解析
配置文件第一行:
log4j.rootLogger=DEBUG, Console ,DFile ,EFILE
log4j.rootLogger是根配置屬性,後面的參數格式是:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
第一個參數是日誌等級,後面可跟多個參數,表示的是要把日誌的記錄信息輸出到什麼地方,該例當中,有三個輸出地方:
Console 表示輸出到控制檯;DFile 和EFILE是自己定義的輸出地址。有幾個輸出地址,下面就要幾個配置段。本例當中,DFile用來記錄debug及以上信息,EFile用來記錄error及以上信息。
接下來的3段內容:
2.2.1 第1段內容
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.TTCCLayout
其中的#號表示註釋,第一行的:
log4j.appender.Console=org.apache.log4j.ConsoleAppender
就表示輸出到控制檯,第二行:
log4j.appender.Console.layout=org.apache.log4j.TTCCLayout
表示的是輸出的信息格式,這裏layout屬性的值可以是:
org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含線程、類名等信息)
其中一般就使用第2種,這裏選擇的是第4種,所以輸出的信息如下:
[main] DEBUG cn.zhoucy.test.TestLog4j - 調試debug信息
[main] INFO cn.zhoucy.test.TestLog4j - 普通Info信息
[main] WARN cn.zhoucy.test.TestLog4j - 警告warn信息
[main] ERROR cn.zhoucy.test.TestLog4j - error信息
[main] FATAL cn.zhoucy.test.TestLog4j - 嚴重錯誤fatal信息
等下可以對比DFile和EFile的org.apache.log4j.PatternLayout模式。
2.2.1 第2段內容
#DEBUGFile
log4j.appender.DFile = org.apache.log4j.FileAppender
log4j.appender.DFile.File = E://DEBUG.log
log4j.appender.DFile.layout = org.apache.log4j.PatternLayout
log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
log4j.appender.DFile.Threshold = DEBUG
log4j.appender.DFile.Append = false
其中第1行:
log4j.appender.DFile = org.apache.log4j.FileAppender
因爲在首行指定了輸出地方有DFile,所以這裏log4j.appender.後面跟的就是DFile,等式右邊就表示這是輸出到File文件裏去的。
第2行:
log4j.appender.DFile.File = E://DEBUG.log
- 1
指明瞭輸出的地址是E://DEBUG.log
第3行:
log4j.appender.DFile.layout = org.apache.log4j.PatternLayout
指明輸出格式是PatternLayout,這種格式是可以自定義輸出的,結合下面一行可以調整輸出格式。
第4行:
log4j.appender.DFile.layout.ConversionPattern =%d [%t] %-5p [%c] - %m%n
這一行很重要,ConversionPattern 屬性表示的是輸出的格式定義:
%m 輸出代碼中指定的消息;
%M 輸出打印該條日誌的方法名;
%p 輸出優先級,即DEBUG,INFO,WARN,ERROR,FATAL;
%r 輸出自應用啓動到輸出該log信息耗費的毫秒數;
%c 輸出所屬的類目,通常就是所在類的全名;
%t 輸出產生該日誌事件的線程名;
%n 輸出一個回車換行符,Windows平臺爲"rn”,Unix平臺爲"n”;
%d 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyyy-MM-dd HH:mm:ss,SSS},輸出類似:2002-10-18 22:10:28,921;
%l 輸出日誌事件的發生位置,及在代碼中的行數;
其中-5這一項表示的是輸出的日誌級別名稱所佔的字符數爲5,不足5個字符的用空格補全,其實就是起到對齊的作用,方便查看日誌內容。這一行的配置一般就使用本例的格式即可。
第5行
log4j.appender.DFile.Threshold = DEBUG
表示的是輸出到DFile地址的日誌信息的級別,當然這裏的級別需要在log4j.properties的首行級別定義的管制之下,比如說,首行配置的級別是INFO,那麼這裏即使配置了DEBUG,也沒辦法將DEBUG信息輸出到DFile中。
第6行
log4j.appender.DFile.Append = false
這裏的Append屬性,表示的是日誌文件是否追加,默認就是true,表示追加,即下一次的信息追加在後面,如果設置爲false則表示不追加,那就是以覆蓋的方式來記錄日誌,一般不會選這種方式。這裏選了覆蓋,EFile中的Append屬性,沒有設置,默認則是追加。
2.2.1 第3段內容
這裏幾乎和第2段都有對應,只講一下第5行:
log4j.appender.EFILE.Threshold = ERROR
這裏表示的是,只把ERROR即以上信息(包含FATAL)輸出記錄到EFile,其實本例的目的就是說,將ERROR的信息單獨記錄出來,方便進行查看。
附:log4j-1.2.17下載地址http://download.csdn.net/detail/theblackbeard/9820176
--------------------- 作者:無揚人生 來源:CSDN 原文:https://blog.csdn.net/TheBlackbeard/article/details/70256058?utm_source=copy 版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!