我正在尝试在log4j中进行配置,我不确定是否支持...
这是场景:
我为包“com.abc”定义了一个记录器,为包“com”定义了另一个记录器(两者都是additivity = true)。
这实际上意味着com.abc.myClass类中的任何记录都将记录到两个记录器中......
我的目标是能够定义第二个记录器(父记录器)来记录直接进入该记录器的任何消息,例如来自com.myClass类,同时仅记录通过可加性功能提供的ERROR级别消息,并且已记录在后代记录器中...
如果我将“com”的记录器设置为ERROR,我只会看到错误级别的消息,而我愿意看到那些直接写入此日志的INFO级别消息......
可能吗?像设置可加性日志记录级别左右......
感谢, GB。
答案 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;
}
}
当然,你必须实现一个更符合你所有需求的条件。