使用SMTPAppender我只收到ERROR而不是INFO类型的日志项

时间:2011-04-07 10:18:59

标签: java email smtp log4j appender

我已将SMTPAppender配置到我的Java应用程序中。

<appender name="AdministratorEmail" class="org.apache.log4j.net.SMTPAppender">
  <param name="Threshold" value="info" />
  <param name="BufferSize" value="512" />
  <param name="SMTPHost" value="smtp.sss.intranet" />
  <param name="From" value="adminEbookMaker@sss.intranet" />
  <param name="To" value="user@sss.it" />
  <param name="Subject" value="errors" />       
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" />
  </layout>
  <filter class="org.apache.log4j.varia.LevelRangeFilter">
    <param name="LevelMin" value="info" />
    <param name="LevelMax" value="fatal" />
  </filter>
</appender>

我只收到ERROR日志类型而不是INFO类型!我更改了 LevelMin 但没有,我插入 Thresold ,但没有!

有人有任何建议吗?

1 个答案:

答案 0 :(得分:16)

SMTPAppender按设计仅记录ERROR及以上消息。此级别不受属性的影响。附加状态的文档:

  

默认情况下,如果附加了ERROR或更高级别的消息,将发送电子邮件。可以通过将evaluateatorClass属性设置为实现TriggeringEventEvaluator的类的名称,使用TriggeringEventEvaluator实例设置evaluateator属性或嵌套triggeringPolicy元素(其中指定的类实现TriggeringEventEvaluator

)来修改触发条件。

请参阅:Class SMTPAppender

事实上,只有在第一个ERROR之后才看到INFO消息是由于bufferSize属性所致,该属性在错误之前显示'n'最近的日志行,以便为错误提供上下文。

对此的进一步研究表明,在'extras companion'中有一个TriggerEventEvaluator所需接口的实现

可以从以下网址下载:Apache Download Mirrors

如果在项目中包含此项,则可以将以下内容添加到log4j.xml中的SMTPAppender定义中(请注意,不支持属性格式!)

  <appender name="SMTP" class="org.apache.log4j.net.SMTPAppender">
...
    <triggeringPolicy  class="org.apache.log4j.rolling.FilterBasedTriggeringPolicy">
      <filter class="org.apache.log4j.filter.LevelRangeFilter">
        <param name="levelMin" value="INFO" />
      </filter>
    </triggeringPolicy>
...
  </appender>