2012-12-18 27 views
1

我注意到,當使用log4j發送錯誤電子郵件時,SMTP協議協商並提交時程序執行中出現暫停。使用log4j異步發送電子郵件

推薦使錯誤電子郵件異步發送的方法是什麼?

如果錯誤對進程是致命的,這是否會產生影響?在發送電子郵件之前,如果發生終端異常,我不希望進程死掉。

+1

對於郵件發送你應該使用多線程環境 –

+0

個人而言,[這個例子](http://stackoverflow.com/questions/4306212/use-log4j-to-send-email-reports)幫助了我。 :) – GGrec

+0

@BhavikAmbani,你的意思是我應該產生一個新線程來調用'_log.error(...)'。如果是這樣,那是一個可怕的主意! –

回答

2

的方法似乎是:

  1. AsyncAppender

創建電子郵件的appender,像往常一樣

  • '包裝' 它的配置將類似於:

    <appender name="SmtpAppender" class="org.apache.log4j.net.SMTPAppender"> 
        <!-- ... --> 
    </appender> 
    
    <appender name="AsyncSmtpAppender" class="org.apache.log4j.AsyncAppender"> 
        <appender-ref ref="MAIL"/> 
    </appender> 
    

    但是這並沒有解決我無法發送電子郵件的問題致使過程失敗的致命錯誤條件。有人可以澄清?