2010-08-23 89 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