【问题标题】:Log4j - is this configuration possible?Log4j - 这种配置可能吗?
【发布时间】:2016-02-10 14:40:13
【问题描述】:

我有 2 个附加程序 - A、B。 默认情况下,我希望所有消息都转到 B。如果消息的级别 >= ERROR ,它来自 com.mycomp.* 记录器,我希望它转到 A。

我正在尝试确定在 log4j 1.2 中是否可以使用此配置。到目前为止似乎还没有。

编辑:澄清一下,这里是关于 Logback logback: Two appenders, multiple loggers, different levels的完全相同的问题

【问题讨论】:

  • 是的。你是对的,通过将相同的包设置为不同的错误级别/附加程序会覆盖另一个。所以我建议以编程方式添加附加程序。

标签: log4j


【解决方案1】:

可以使用过滤器完成:

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.

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多