7

我已经在我的 Java 应用程序中配置了一个 SMTPAppender。

<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,但什么也没有!

有人有什么建议吗?

4

1 回答 1

16

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

默认情况下,当附加 ERROR 或更高严重性消息时,将发送电子邮件消息。可以通过使用实现 TriggeringEventEvaluator 的类的名称设置 evaluatorClass 属性、使用 TriggeringEventEvaluator 的实例设置 evaluator 属性或在指定类实现 TriggeringEventEvaluator 的地方嵌套 triggeringPolicy 元素来修改触发条件

请参阅:类 SMTPAppender

您仅在第一个 ERROR 之后才看到 INFO 消息的事实是由于 bufferSize 属性在错误之前显示了“n”个最近的日志行,以便为错误提供上下文。

对此的进一步研究表明,在“附加伴侣”中存在 TriggerEventEvaluator 所需接口的实现

这可以从以下位置下载:Apache 下载镜像

如果您将其包含在您的项目中,则可以将以下内容添加到 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>
于 2011-11-17T16:24:40.450 回答