我正在尝试以编程方式配置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");
我怎样才能打印信息日志?
答案 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);