log4j配置

原文鏈接:http://blog.csdn.net/sbfivwsll/article/details/7897719

log4j簡介:

Log4j是Apache的一個開放源代碼項目,通過使用Log4j,我們可以控制日誌信息輸送的目的地是控制檯、文件、GUI組件、甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等;我們也可以控制每一條日誌的輸出格式;通過定義每一條日誌信息的級別,我們能夠更加細緻地控制日誌的生成過程。最令人感興趣的就是,這些可以通過一個配置文件來靈活地進行配置,而不需要修改應用的代碼。

log4j定義配置文件

日誌信息的優先級,從高到低有:OFF (關閉),FATAL (致命),ERROR(錯誤) ,WARN(警告) ,INFO(信息) ,DEBUG(調試) ,ALL(打開所有的日誌,我的理解與DEBUG級別好像沒有什麼區別得)。
Log4j建議只使用FATAL ,ERROR ,WARN ,INFO ,DEBUG這五個級別。

Log4j的配置文件支持兩種方式:properties與xml方式,這兩種方法寫法不一樣,但是所表示的意義都是一樣的。

 

Properties配置

Xml配置

配置文件加載方式

org.apache.log4j.PropertyConfigurator.configure*

org.apache.log4j.xml.DOMConfigurator.configureAndWatch

日誌名稱的配置及輸出方式

#配置以log4j.apaender開頭,後邊跟上配置的名字,等號後邊是日誌的輸出類(即日誌的輸出方式),將在後邊介紹日誌的輸出類。
log4j.appender.logName1=org.apache.log4j.ConsoleAppender
log4j.appender.logName1.option1=XXX
...
log4j.appender.logName1.optionN=XXX

<?xmlversion="1.0"encoding="UTF-8"?>

<!DOCTYPElog4j:configurationPUBLIC"-//APACHE//DTD LOG4J 1.2//EN""log4j.dtd">

<log4j:configuration>

    <!-- name爲配置的名字,class爲日誌的輸出類(即日誌的輸出方式) -->

<appender name="logName1" class="org.apache.log4j.ConsoleAppender">

    <param name="option1" value="XXX"/>

    ...

    <param name="optionN" value="XXX"/>

</appender>

</log4j:configuration>

外邊的xml根節點都是固定的形式,log4j的所有配置都寫在log4j:configuartion根節點的裏邊,後邊的將不再寫該根節點配置信息。

日誌的輸出方式常用的有以下幾種:
org.apache.log4j.ConsoleAppender     ----控制檯
org.apache.log4j.FileAppender     ----指定的文件中
org.apache.log4j.DailyRollingFileAppender     ----按天生成指定的文件。
org.apache.log4j.RollingFileAppender     ----按配置的文件大小生記錄到指定的文件中(文件到達一定的大小,自動備份,新建一份)


各種輸出方式的選項如下:
1.ConsoleAppender 選項

Threshold=WARN 指定日誌消息的輸出最低層次
ImmediateFlush=true 默認值是true,意謂着所有的消息都會被立即輸出
Target=System.err 默認情況下是:System.out,指定輸出控制檯

2.FileAppender 選項
Threshold=WARN 指定日誌消息的輸出最低層次。
ImmediateFlush=true 默認值是true,意謂着所有的消息都會被立即輸出。
File=mylog.txt 指定消息輸出到mylog.txt文件。
Append=false 默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容。

3.DailyRollingFileAppender 選項
Threshold=WARN 指定日誌消息的輸出最低層次
ImmediateFlush=true 默認值是true,意謂着所有的消息都會被立即輸出
File=mylog.txt 指定消息輸出到mylog.txt文件
Append=false 默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容
DatePattern='.'yyyy-ww 每週滾動一次文件,即每週產生一個新的文件。當然也可以指定按月、周、天、時和分

即對應的格式如下:

        '.'yyyy-MM: 每月

        '.'yyyy-ww: 每週

        '.'yyyy-MM-dd: 每天

        '.'yyyy-MM-dd-a: 每天兩次

        '.'yyyy-MM-dd-HH: 每小時

        '.'yyyy-MM-dd-HH-mm: 每分鐘

4.RollingFileAppender 選項
Threshold=WARN: 指定日誌消息的輸出最低層次
ImmediateFlush=true: 默認值是true,意謂着所有的消息都會被立即輸出
File=mylog.txt: 指定消息輸出到mylog.txt文件
Append=false: 默認值是true,即將消息增加到指定文件中,false指將消息覆蓋指定的文件內容
MaxFileSize=100KB: 後綴可以是KB, MB 或者是 GB. 在日誌文件到達該大小時,將會自動滾動,即將原來的內容移到mylog.log.1文件
MaxBackupIndex=2: 指定可以產生的滾動文件的最大數

日誌的佈局方式

log4j.appender.appenderName.layout=packages.layoutClass
log4j.appender.f.layout.ConversionPattern=%d %r %l %t [%p] - %m%n

    <appendername="fileLog"class="org.apache.log4j.DailyRollingFileAppender">

        <paramname="file"value="logs/a.log"/>

        <paramname="threshold"value="warm"/>

        <layout class="org.apache.log4j.PatternLayout">

            <param name="ConversionPattern" value="%d %r %l %t [%p] - %m%n"/>

        </layout>

    </appender>

Log4j提供的layout常用的有以下幾種:
  org.apache.log4j.HTMLLayout,以HTML表格形式佈局

  org.apache.log4j.PatternLayout,可以靈活地指定佈局模式
  org.apache.log4j.SimpleLayout,包含日誌信息的級別和信息字符串
  org.apache.log4j.TTCCLayout,包含日誌產生的時間、線程、類別等等信息
例如:
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
配置格式化信息,其語法爲 :
log4j.appender.appenderName.layout.ConversionPattern= XXX XXX XXX
log4j提供的打印參數如下:

-X號: X信息輸出時左對齊;
%p: 輸出日誌信息優先級,即DEBUG,INFO,WARN,ERROR,FATAL,
%d: 輸出日誌時間點的日期或時間,默認格式爲ISO8601,也可以在其後指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},輸出類似:2002年10月18日 22:10:28,
921
%r : 輸出自應用啓動到輸出該log信息耗費的毫秒數

%c : 輸出日誌信息所屬的類目,通常就是所在類的全名
%t : 輸出產生該日誌事件的線程名
%l : 輸出日誌事件的發生位置,相當於%C.%M(%F:%L)的組合,包括類目名、發生的線程,以及在代碼中的行數。舉例:Testlog4.main(TestLog4.java:10)
%x : 輸出和當前線程相關聯的NDC(嵌套診斷環境),尤其用到像java servlets這樣的多客戶多線程的應用中。

%%: 輸出一個"%"字符
%F : 輸出日誌消息產生時所在的文件名稱
%L : 輸出代碼中的行號
%m: 輸出代碼中指定的消息,產生的日誌具體信息
%n : 輸出一個回車換行符,Windows平臺爲"\r\n",Unix平臺爲"\n"輸出日誌信息換行
可以在%與模式字符之間加上修飾符來控制其最小寬度、最大寬度、和文本的對齊方式 。如:
1)%20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,默認的情況下右對齊。
2)%-20c:指定輸出category的名稱,最小的寬度是20,如果category的名稱小於20的話,"-"號指定左對齊。
3)%.30c:指定輸出category的名稱,最大的寬度是30,如果category的名稱大於30的話,就會將左邊多出的字符截掉,但小於30的話也不會有空格。
4)%20.30c:如果category的名稱小於20就補空格,並且右對齊,如果其名稱長於30字符,就從左邊交遠銷出的字符截掉。
例如:
log4j.appender. CONSOLE.layout.ConversionPattern=%d{yyyyMMdd-HH:mm:ss} %t %c %m%n

根配置方式

#配置log4j根節點信息,第一個是日誌輸出級別,可以根據上邊的幾個日誌的優先級來設置修改;後邊是該根節點使用的日誌配置名字,可以配置多個,以逗號分隔;
#這裏可能會看到rootCategory,它與rootLogger是相等的,前者是以前老版本的寫法,後者是新版本的寫法
log4j.rootLogger=debug[,logName1[,logName2]...]

<root>

    <level value="warn"/><!--日誌級別,原則同左邊 -->

    <appender-ref ref="logName1"/>

    <appender-ref ref="logName2"/><!--這裏可以配置多個引用 -->

</root>


發佈了14 篇原創文章 · 獲贊 4 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章