Log4j - 这种配置可能吗?

时间:2015-11-09 20:37:06

标签: log4j

我有2个appenders - A,B。 默认情况下,我希望所有邮件都转到B.如果邮件的级别为> =错误,则来自com.mycomp。* logger,我希望它转到A。

我试图弄清楚log4j 1.2中是否可以进行此配置。到目前为止似乎没有。

修改以澄清,这里有关于Logback logback: Two appenders, multiple loggers, different levels

的完全相同的问题

1 个答案:

答案 0 :(得分:0)

可以使用过滤器完成:

public class MyLogFilter extends Filter {
    @Override
    public int decide(LoggingEvent loggingEvent) {
        if (!loggingEvent.getLevel().isGreaterOrEqual(Level.ERROR) &&
                !loggingEvent.getLoggerName().startsWith("com.mycomp")) {
            return DENY;
        }

        return NEUTRAL;
    }
}

之类的配置
log4j.rootLogger=(INFO, A, B);
log4j.logger.com.mycomp=(INFO, A);
log4j.appenders.A.filter.a=com.mycomp.MyLogFilter;

不幸的是,you can only specify filters in log4j.xml and not in log4j.properties.