log4j2、ログは2回の問題を打ちます

log4j2を使用する場合、一般的に、以下の構成のように、異なるログ印刷ログレベルの異なる分類を必要とします

コードをコピー
<! - 監視間隔を指定は秒で、自動再構成をLog4jの- >
 < 設定デバッグ= "OFF" にMonitorInterval = "10" > < プロパティ> < プロパティ= "ログ・パス" > server_logs < / プロパティ> </ プロパティ> < アペンダ> < コンソール= "コンソール" ターゲット= "SYSTEM_OUT" > < PatternLayoutはのパターン=「%のD {MM-DD-YYYY HH:MM:SS%}%T%T - 5level %クラス{36} - %MSG %XEX%N "/> </ コンソール> </ アペンダ> < ロガー> < ロガー= "com.mygame" レベル= "デバッグ" > < アペンダ-REF REF = "コンソール" /> </ ロガー> < ルートレベル= "エラー" > < アペンダ-REF REF = "コンソール" /> </ ルート> </ ロガー> </ 構成>
コードをコピー

何も指定されたロガー、ルートを使用してログ出力が、ルートレベルが存在しない場合は、この設定の目標は、デバッグログの出力レベルを次のエラー、希望com.mygameパッケージです。しかし、この操作の後、我々は、ログ出力は二回、私がメッセージを2回処理されていることを考えるように私を導いたメッセージキューからメッセージを受信した後、印刷のログを見つけます。

この状況は、機構のlog4j2あるロガーはlog4j2に追加の構成上の子ノードのルートがあるが、Log4j2に、ロガーは、根の継承がルートノードであり、加法のプロパティが存在し、それは子供は親ロガーロガー出力源(アペンダ)フラグを継承するかどうか。具体的には、デフォルトでは、ロガーロガーは、サブロガーロガーの親アペンダで出力されます親アペンダを、継承します勃発しました。加法性がfalseに設定されている場合、サブロガーのみ出力アペンダの親ロガーのない出力で、独自のアペンダインチ 上記の設定com.mygameロガーと根のためには、コンソールに出力され、その出力は、2件のログが表示されます。

この推移を破る非常に単純な、下に示すように、ロガーで加法=「false」に追加するには:

コードをコピー
< ロガー>
         < ロガー= "com.mygame" レベル= "デバッグ" 加法= "false"に> < アペンダ-REF REF = "コンソール" /> </ ロガー> < ルートレベル= "エラー" > < アペンダ-REF REF = "コンソール" /> </ ルート> </ ロガー>

おすすめ

転載: www.cnblogs.com/zjm-1/p/11979417.html