2013-06-22 39 views
0

我有這個log4j.xml文件,該文件只應該從INFO級別登錄 ,但我也在我的日誌中獲得了WARN級別。爲什麼我在記錄器中獲取警告消息(當配置爲從INFO級別獲得)

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender class="org.apache.log4j.RollingFileAppender" name="FILE"> 
     <param value="D:\\RAM\\tst.log" name="File" /> 
     <param value="10" name="MaxBackupIndex" /> 
     <param value="200MB" name="MaxFileSize" /> 
     <layout class="org.apache.log4j.PatternLayout"> 
     <param value="%d[%t] %-5p(%F:&lt;%M&gt;:%L)- %m%n" name="ConversionPattern" /> 
     </layout> 
    </appender> 

    <appender class="com.Log4JCustomAppender" name="CUSTAPPEN"> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param value="%d[%t] %-5p(%F:&lt;%M&gt;:%L)- %m%n" name="ConversionPattern" /> 
     </layout> 
     </appender> 

    <appender class="org.apache.log4j.AsyncAppender" name="ASYNC"> 
    <param name="Blocking" value="false"/> 
    <param name="BufferSize" value="1000"/> 
     <appender-ref ref="CUSTAPPEN" /> 
    </appender> 

    <root> 
     <level value="INFO" /> 
     <appender-ref ref="FILE" /> 
     <appender-ref ref="ASYNC" /> 
    </root> 
</log4j:configuration> 

這是輸出我在我的自定義追加程序獲取和RollingFileAppender進行

LOgged One is 2013-06-23 01:05:55,954[main] FATAL(Hi.java:<main>:14)- This is a fatal Message 

LOgged One is 2013-06-23 01:05:55,965[main] WARN (Hi.java:<main>:15)- This is a warn Message 

請告訴我如何避免這種情況。

回答

2

此行爲很正常。將記錄器設置爲特定級別值表示您希望該級別和上面的所有級別。

級別是:

  • TRACE
  • DEBUG
  • 信息
  • WARN
  • ERROR
  • FATAL
  • OFF
如果你只想要 INFO水平

,您必須對您的appender使用過濾器:

<filter type="org.apache.log4j.varia.LevelMatchFilter"> 
    <acceptOnMatch value="true" /> 
    <levelToMatch value="INFO" /> 
</filter> 
<filter type="org.apache.log4j.varia.DenyAllFilter" /> 
+0

我的錯誤,浪費別人的時間絕對對不起,我認爲這WARN是信息之前,爲澄清感謝,該過濾器匹配非常有用,再次感謝。 – Kiran

+0

所以我應該在我的CustomAppender中還是在AsyncAppender中應用此過濾器?請僅在您的AsyncAppender上說明 – Kiran

+0

。在CustomAppender上設置過濾器應該會得到相同的結果,但如果我們可以先過濾,讓AsyncAppender轉發到CustomAppender是沒有用的。 –

相關問題