2013-06-22 28 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是没有用的。 –

相关问题