0

サポートされているかどうかわからないlog4jの構成に到達しようとしています...

シナリオは次のとおりです。

パッケージ「com.abc」用に 1 つのロガーを定義し、パッケージ「com」用に別のロガーを定義しました (どちらも additivity=true を使用)。

これは実質的に、クラス com.abc.myClass のログが両方のロガーに記録されることを意味します...

私の目標は、2 番目のロガー (親ロガー) を定義して、たとえばクラス com.myClass からそのロガーに直接送信されたメッセージをログに記録できるようにすることです。 ..

「com」のロガーを ERROR に設定すると、エラー レベルのメッセージのみが表示されますが、このログに直接書き込まれた INFO レベルのメッセージは表示されます...

それは可能ですか?加法的ロギングレベルの設定など...

ありがとう、GB。

4

1 に答える 1

1

独自のLog4J Filterを作成します。

このフィルターを親アペンダーにアタッチし、「com.abc」イベントについてのみ、レベルが ERROR でない場合にそれらをフィルター処理します。

簡単な例:

public class MyCustomFilter extends Filter
{
  @Override
  public int decide(final LoggingEvent event) {
    if (event. getFQNOfLoggerClass().startsWith("com.abc.") && !event.getLevel().isGreaterOrEqual(Level.ERROR) {
      return DENY;
    }
    return NEUTRAL;
  }
}

当然のことながら、すべてのニーズに合ったより良い条件を実装する必要があります。

于 2012-04-07T02:17:51.157 に答える