2012-11-07 34 views
1

在許多業務應用中log4j的組合使用與郵件的appender這樣..是否有可能將輸出緩存到Log4j Mail Appender?

log4j.rootLogger=ERROR, MAIL 
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender 
log4j.appender.MAIL.BufferSize=1 
log4j.appender.MAIL.SMTPHost=smtp.example.com 
[email protected] 
[email protected] 
log4j.appender.MAIL.Subject=Exception 
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout 
log4j.appender.MAIL.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %5r %-5p [%t] %c{2} - %m%n 

..出現同一類型的幾個例外的可能性,並可能持續,直到問題得到解決的很高。

是否有緩衝輸出的方法,以便郵件只在給定的時間間隔內發送?

一個很好的解決方案是將它發生的類型和類的異常進行分組,但只需附加到本地日誌並按定時間隔發送滾動日誌就足夠了。這個想法是不能從一個有壓力的系統收到數百或數千個錯誤報告,而是要及時收到重要信息,然後不要爲後續行動而煩惱。

有沒有解決方案沒有實施TriggeringEventEvaluator

+1

爲什麼不將錯誤記錄到文件中,並且有一個自定義腳本輪詢文件,以任何間隔/郵件發送郵件?這樣你就可以完全控制。你可以登錄到一個文件,並有一個cron作業不時郵寄日誌。我認爲直接登錄郵件並不是一個好主意。 – eis

+0

通常你的建議是一個好主意,但它不是很靈活。如果我編寫一個服務,我希望將基本功能和配置捆綁在應用程序中,以便將它移動到另一個容器。 – Martin

+1

我認爲它非常靈活,但你是對的,因爲它不會與應用程序捆綁在一起。我們長期以來一直使用這樣的解決方案,但是,我們並沒有將要發佈的產品編碼到我們自己的平臺上。 – eis

回答

2

你可以試試這個:https://github.com/reaktor/log4j-email-throttle

簡單,但緩衝正常工作。

+0

這不是真正的問題答案,但我想這是真的在這種情況下是錯誤的問題。我會解決您的問題,甚至將問題標記爲已回答。謝謝! – Martin