log4j,可加性和日志记录级别

时间:2012-04-07 01:02:53

标签: logging log4j

我正在尝试在log4j中进行配置,我不确定是否支持...

这是场景:

我为包“com.abc”定义了一个记录器,为包“com”定义了另一个记录器(两者都是additivity = true)。

这实际上意味着com.abc.myClass类中的任何记录都将记录到两个记录器中......

我的目标是能够定义第二个记录器(父记录器)来记录直接进入该记录器的任何消息,例如来自com.myClass类,同时仅记录通过可加性功能提供的ERROR级别消息,并且已记录在后代记录器中...

如果我将“com”的记录器设置为ERROR,我只会看到错误级别的消息,而我愿意看到那些直接写入此日志的INFO级别消息......

可能吗?像设置可加性日志记录级别左右......

感谢, GB。

1 个答案:

答案 0 :(得分:1)

创建自己的Log4J Filter

将此过滤器附加到父appender,并且仅当“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;
  }
}

当然,你必须实现一个更符合你所有需求的条件。