log4j を使用してエラー メールを送信すると、SMTP プロトコルがネゴシエートおよびコミットするため、プログラムの実行が一時停止することに気付きました。
エラーメールの送信を非同期にするために推奨される方法は何ですか?
エラーがプロセスにとって致命的である場合、これは意味がありますか? 端末例外が発生した場合に、電子メールが送信される前にプロセスが停止することは望ましくありません。
アプローチは次のようです。
AsyncAppender
構成は次のようになります。
<appender name="SmtpAppender" class="org.apache.log4j.net.SMTPAppender">
<!-- ... -->
</appender>
<appender name="AsyncSmtpAppender" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="MAIL"/>
</appender>
ただし、これは、プロセスをダウンさせる致命的なエラー状態で電子メールを送信できないという私の懸念には対応していません。誰かが明確にしてもらえますか?
ロギング フレームワークを切り替えることができる場合は、logback
電子メールを非同期で送信する ( http://logback.qos.ch/manual/appenders.html#SMTPAppender ) ため、非同期ラッパーは必要ありません。