1

log4j を使用してエラー メールを送信すると、SMTP プロトコルがネゴシエートおよびコミットするため、プログラムの実行が一時停止することに気付きました。

エラーメールの送信を非同期にするために推奨される方法は何ですか?

エラーがプロセスにとって致命的である場合、これは意味がありますか? 端末例外が発生した場合に、電子メールが送信される前にプロセスが停止することは望ましくありません。

4

2 に答える 2

3

アプローチは次のようです。

  1. いつものように、メールアペンダーを作成します
  2. で「ラップ」します。AsyncAppender

構成は次のようになります。

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

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

ただし、これは、プロセスをダウンさせる致命的なエラー状態で電子メールを送信できないという私の懸念には対応していません。誰かが明確にしてもらえますか?

于 2012-12-18T11:37:13.107 に答える
0

ロギング フレームワークを切り替えることができる場合は、logback電子メールを非同期で送信する ( http://logback.qos.ch/manual/appenders.html#SMTPAppender ) ため、非同期ラッパーは必要ありません。

于 2017-06-21T14:21:14.843 に答える