log4j limit Appender到特定级别

时间:2015-01-29 14:36:20

标签: java logging log4j

我正在尝试以编程方式配置Log4j。我正在尝试向记录器添加几个appender,其中level设置为ALL。 还没有其他appender(我使用了removeallAppenders)。

但是当我在INFO LEVEL和WARN LEVEL中调用记录器时,我感到很惊讶 我有2个输出。 我需要的只是我在appender中配置的打印级别。

以下是我使用的一些代码:

    LoggerFactory loggerr = new LoggerFactory("myLoggerName","","");

    logger.removeAllAppenders();
    ConsoleAppender caWarn = new ConsoleAppender();
    caWarn.setLayout(layout);
    caWarn.setName("warnconsole");
    caWarn.setThreshold(Level.INFO);
    caWarn.activateOptions();
    logger.addAppender(caWarn);

    loggerr.info("infooo");
    loggerr.warn("warning");

我怎样才能打印信息日志?

1 个答案:

答案 0 :(得分:0)

就像@Fildor说的那样,我通过使用Appender过滤器来解决这个问题。

过滤器允许三个选项 LevelMin LevelMax AcceptOnMatch

并且我将每个appender限制在我想要的水平,可能是乏味但仍然是我发现以编程方式执行的唯一响应和解决方案

    ConsoleAppender caInfo = new ConsoleAppender();
    caInfo.setName("infoConsole");
    caInfo.setThreshold(Level.DEBUG);
    layout.setConversionPattern("%-5p %d [%t] %c %x - %m%n");
    caInfo.setLayout(layout);
    LevelRangeFilter lrf = new LevelRangeFilter();
    lrf.setLevelMax(Level.DEBUG);
    lrf.setLevelMin(Level.DEBUG);
    caInfo.addFilter(lrf);
    caInfo.activateOptions();
    logger.addAppender(caInfo);