0

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

这是场景:

我为包“com.abc”定义了一个记录器,为包“com”定义了另一个记录器(两者都具有可加性=true)。

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

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

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

那可能吗 ?诸如设置可加性日志级别之类的东西...

谢谢,GB。

4

1 回答 1

1

创建您自己的Log4J 过滤器

将此过滤器附加到父附加程序,并且仅当“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 回答