为什么我在配置为从INFO级别获取警报时也会收到警告消息

时间:2013-06-22 19:45:15

标签: log4j

我有这个log4j.xml文件,它只能从INFO级别登录 但我也在我的日志中获得了WARN等级。

<?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>

这是我在Custom Appender和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

请告诉我如何避免这种情况。

1 个答案:

答案 0 :(得分:2)

这种行为很正常。将记录器设置为特定级别值表示您希望该级别和上述所有级别。

级别是:

  • TRACE
  • DEBUG
  • INFO
  • 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" />