2010-08-23 42 views
2

我有一个JBOSS批处理应用程序,有时会在一分钟内将数百封电子邮件发送到具有Log4J错误的同一电子邮件地址。这会导致Gmail出现问题,因为它表示我们正在为该Gmail帐户发送电子邮件太快。Log4J SMTP摘要/聚合电子邮件?

所以我想知道是否有办法基本上创建一个“摘要”或“聚合”电子邮件将所有的错误日志放在一封电子邮件中,并发送,每5分钟。这样每隔5分钟我们可能会收到一封大邮件,但至少我们实际上得到的是电子邮件,而不是由gmail服务器拒绝它而延迟数小时。

我看了this post,提出了一些关于使用评估器来做到这一点,但我看不到在Log4J xml配置文件中如何配置它。它似乎也可能无法将所有日志“消化”为1封电子邮件。

有没有人做过这个?或知道是否有可能?

回答

3

http://www.manning-sandbox.com/thread.jspa?threadID=9913

设定这个属性

log4j.appender.myMail.evaluatorClass = com.mydomain.example.MyEvaluator 

现在,你必须创建评估类并实现org.apache.log4j.spi.TriggeringEventEvaluator接口,并把这个类在log4j的可以访问它的路径。

//Example TriggeringEventEvaluator impl 

package com.mydomain.example; 

import org.apache.log4j.spi.LoggingEvent; 
import org.apache.log4j.spi.TriggeringEventEvaluator; 

public class MyEvaluator implements TriggeringEventEvaluator { 

    public boolean isTriggeringEvent(LoggingEvent event) { 
     return true; 
    } 

} 

您必须在此方法中编写评估程序逻辑。

+0

感谢这个介绍我的外部,但公开可用的解决方案,看起来像它会做的工作。最后,我关掉了电子邮件,因为它已经失控。但是,如果我需要重新启用它,这肯定会有所帮助! – 2010-08-31 10:02:23

+0

我一直在想知道为什么我的电子邮件appender不工作。如果log4j xsd可以提供有关畸形配置的反馈,那么它可能会更好。将阈值或记录器级别与SMTPAppender结合使用,不会引发异常,这实在令人困惑。虽然更改SMTPAppender的日志级别的唯一方法实际上是实现并提供TriggeringEventEvaluator。 – lwpro2 2013-06-20 09:23:16