2

log4j通知メールの送信に問題があります。

私のlog4j.properties

log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=ERROR
log4j.appender.MAIL.BufferSize=512
log4j.appender.MAIL.SMTPHost=10.10.10.10
log4j.appender.MAIL.From=team@domain.com
log4j.appender.MAIL.Subject=Subject Here
log4j.appender.MAIL.To=team@domain.com
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n

送信して電子メールを送信しようとすると、プログラムがエラーを引き起こしたので、log.error()テストするために作成しました。

以下のコードをテストしましたが、それでもメールは送信されませんでした。

public static void main(String[] args) {
    log.error("Error ");
}

Thread.sleep上記のコードに a を追加すると。できます!

public static void main(String[] args) throws Exception{
    log.error("Error ");
    Thread.sleep(1000000L);
}

問題は、main thread終了するためmail sending thread、終了することです。そのため、log4j がメールを完全に送信するまでプログラムを待機する (終了しない) ように変更することにしました。しかし、log4j でメール送信ステータスを取得する方法がわかりません。

どんな助けでも感謝します。

4

2 に答える 2

0

BufferSize の値を 1 に設定してみてください。ロガーは、送信する前にバッファーがいっぱいになるのを待っているだけかもしれません。

于 2013-08-28T13:30:20.347 に答える
0

への呼び出しを追加

org.apache.log4j.LogManager.shutdown();

mainメソッドの最後に

于 2015-12-02T17:30:24.327 に答える