【问题标题】:log4j, additivity and logging levellog4j、可加性和日志记录级别
【发布时间】:2012-04-07 01:02:53
【问题描述】:

我正在尝试使用 log4j 中的配置,但我不确定它是否受支持...

这是场景:

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

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

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

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

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

谢谢, 国标。

【问题讨论】:

    标签: logging log4j


    【解决方案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;
      }
    }
    

    当然,您必须实施一个更好的条件来满足您的所有需求。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      相关资源
      最近更新 更多