私はJavaとlog4j2の新機能を使用しています。私の問題は次のとおりです。ロギングにlog4j2を使用するアプリケーションを作成しました。プログラムはデータを分析し、与えられた文字列を必要に応じて解析できない場合に警告を出力します。時にはプログラムが予期しない文字列を多く取得し、同じエラーメッセージが常に記録されることがあります。ですから、同じエラーメッセージを何度も繰り返し記録することを避けるにはどうしたらよいでしょうか。たとえば、同じエラーメッセージをログファイルに2000回表示する代わりに、このエラーメッセージがx回書き込まれたというヒントをログファイルに書きたいと思います。私の現在のlog4j2設定ファイルを見て、次のように:log4j2の重複メッセージを抑制する方法
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="pattern">%d{DEFAULT} %-5p %-18.18c %4.4L [%-15.15t] %m%n</Property>
</Properties>
<Appenders>
<Console name="STDERR" target="SYSTEM_ERR">
<PatternLayout pattern="${pattern}" />
</Console>
</Appenders>
<Loggers>
<Root level="warn">
<AppenderRef ref="STDERR" />
</Root>
</Loggers>
</Configuration>
実はそれはむしろ、あなたの実際のAppenderに委譲するジェネリックAppenderWrapperを持ってしても意味があります。したがって、コンソールアペンダがもう気に入らなければ、簡単にアペンダを簡単に切り替えることができます。 – philnate
フィルターを使用して同じことを達成できます。フィルタには、イベントと一致する数多くのパターンを指定できます。フィルタがパターンに一致すると、フィルタはメモリ内の記憶領域に格納され、イベントの伝搬が停止します。メモリ内ストレージBeanは、ワーカーに単純な古いログを使用して集約をログに記録させることができます(シャットダウン時に必ず書き出すようにしてください)。そうすれば、単にすべてのアグリゲーターを再利用してフィルターに作業を任せることができます。 – pandaadb