log4j

Appender 爲日誌輸出目的地,Log4j提供的appender有以下幾種:

org.apache.log4j.ConsoleAppender(控制檯),
org.apache.log4j.FileAppender(文件),
org.apache.log4j.DailyRollingFileAppender(每天產生一個日誌文件),
org.apache.log4j.RollingFileAppender(文件大小到達指定尺寸的時候產生一個新的文件),
org.apache.log4j.WriterAppender(將日誌信息以流格式發送到任意指定的地方)


Layout:日誌輸出格式,Log4j提供的layout有以下幾種:

 

org.apache.log4j.HTMLLayout(以HTML表格形式佈局),
org.apache.log4j.PatternLayout(可以靈活地指定佈局模式),
org.apache.log4j.SimpleLayout(包含日誌信息的級別和信息字符串),
org.apache.log4j.TTCCLayout(包含日誌產生的時間、線程、類別等等信息)

日誌信息格式中幾個符號所代表的含義:
 -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字符,就從左邊較遠輸出的字符截掉。

 

 

<appender name="Appender1" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.FixedWindowRollingPolicy">
            <param name="activeFileName" value="applog.log"/> 
            <param name="maxIndex" value="10"/>
            <param name="FileNamePattern" value="applog.log.%i.gz" />
        </rollingPolicy>
    <triggeringPolicy class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
             <param name="maxFileSize" value="51200000"/>
        </triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p [Thread-%t] %d %c{1} | %m %n" />
    </layout>
</appender>

<logger name="DEBUGGER" additivity="false">
	<level value="DEBUG" />
	<appender-ref ref="Appender1" />
</logger>
<root>
	<level value="WARN" />
</root>

 

 

 

Log4j additivity則使指是否輸出到頂層包定義的Appender中,如com.pa中定義了一個Appender A1,而com.pa.pb中又定義了一個Appender A2,則程序運行時,com.pa.pb中的類若有日誌輸出,則既會輸出到A1中,也會輸出到A2中。

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