2

Log4Jエラーのある同じメールアドレスに1分間に数百通のメールを送信することがあるJBOSSバッチアプリケーションがあります。これにより、Gmailで問題が発生します。これは、Gmailアカウントに対してメールの送信が速すぎることを示しているためです。

したがって、基本的に「ダイジェスト」または「集約」メールを作成する方法があるかどうか疑問に思いました。すべてのエラーログを1つのメールに入れ、5分ごとに送信します。そのため、5分ごとに大きなメールが届く可能性がありますが、少なくとも実際には、Gmailサーバーが拒否することで何時間も遅れる代わりにメールが届きます。

エバリュエーターを使用してそれを行うことについて何かを示唆しているこの投稿を読みましたが、Log4Jxml構成ファイルでそれがどのように構成されているかがわかりませんでした。とにかく、すべてのログを1つの電子メールに「ダイジェスト」できない可能性もあるようです。

誰かがこれを以前にやったことがありますか?またはそれが可能かどうか知っていますか?

4

2 に答える 2

4

(アーカイブされた)SMTPAppenderの使用ページから:

このプロパティを設定します

log4j.appender.myMail.evaluatorClass = com.mydomain.example.MyEvaluator

次に、エバリュエータークラスを作成してorg.apache.log4j.spi.TriggeringEventEvaluatorインターフェイスを実装し、log4jがアクセスできるパスにこのクラスを配置する必要があります。

//Example TriggeringEventEvaluator impl

package com.mydomain.example;

import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;

public class MyEvaluator implements TriggeringEventEvaluator {

    public boolean isTriggeringEvent(LoggingEvent event) { 
        return true; 
    }

} 

このメソッド内にエバリュエーターロジックを記述する必要があります。

于 2010-08-30T11:52:20.710 に答える
0

log4j2用の無料で使用可能なソリューションを作成しましたExtendedSmtpAppender
(まだlog4j 1.xを使用している場合は、もちろん-とlog4j-1.x.jar+に置き換えてください。)log4j-1.2-api-2.x.jarlog4j-core-2.x.jarlog4j-api-2.x.jar

Maven Centralから取得しますde.it-tw:log4j2-extras(これにはJava7以降とlog4j2.8以降が必要です)。
Java 6(したがってlog4j 2.3)に制限されている場合は、de.it-tw:log4j2-Java6-extras

さらに、GitLabプロジェクトを参照してください: https ://gitlab.com/thiesw/log4j2-extras (または https://gitlab.com/thiesw/log4j2-Java6-extras


[古いテキスト:
log4j2を使用している場合は、他のスタックオーバーフローの問題への回答を参照してください:https ://stackoverflow.com/a/34072704/5074004

または、 https: //issues.apache.org/jira/browse/LOG4J2-1192に示されている外部の公開されているソリューションに直接 アクセスします
]

于 2015-12-03T17:51:55.833 に答える