log4j.properties配置詳解

轉載 。 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 版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

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