2017-05-29 26 views
0

私は、ログメッセージが記録される前にそのメッセージを動的に変更できるように、すべてのログメッセージに対してメソッドを実行させたいと考えています。メッセージをログに記録するかどうかを指定できるフィルタがありますが、メッセージの記録を停止したくない場合は、ログに記録する前に変更する必要があります。これをやり遂げるにはどうすればいいですか?ログに記録される前にlog4j2メッセージを変更するには?

注:私はlog4j2についてこの質問をしましたが、他の一般的なJavaロギングフレームワークも公開しています。

答えて

1

独自のアペンダーを実装できます。

http://logging.apache.org/log4j/2.x/manual/appenders.html#RewriteAppender

はちょうどあなたが使用している現在のアペンダを拡張し、必要な動作を追加、または単にRewriteAppenderは、それが他のAppenderによって処理される前に、操作するのLogEventを可能RewriteAppender

RewriteAppender を使用しています。これは、パスワードなどの機密情報をマスクしたり、各イベントに情報を注入するために使用できます。 RewriteAppenderはRewritePolicyで設定する必要があります。 RewriteAppenderは、それが適切にシャットダウンできるように参照するAppendersの後に設定する必要があります。

+0

私はRewritePolicyを実装しますが、私はそれを正しく登録していないです。私は[この例](https://stackoverflow.com/questions/30247323/how-to-create-custom-rewritepolicy-in-log4j2)に従おうとしましたが、このエラーが発生しました:「クラスのファクトリメソッドを呼び出せませんクラス..."。このRewritePolicyを正しく登録する方法 – Hmmmmm

1

ファクトリメソッドを忘れないでください:)

@PluginFactory 
    public static MarkerInjectorRewritePolicy createPolicy() { 
     return new MarkerInjectorRewritePolicy(); 
    } 

は、ここに私のgithubのアカウントの作業例です: https://github.com/sercasti/Log4j-RewriteAppender/

関連する問題