在maven中运行junit测试忽略了编程的log4j2设置

时间:2015-07-17 17:11:59

标签: eclipse logging junit log4j2

我有一个特定的JUnit测试来处理一个大数据文件,当日志记录级别留在TRACE上时,它会杀死Eclipse - 这与控制台处理有关,这与这个问题无关。

我经常在使用m2e运行所有测试之间切换,在这种情况下,我不需要任何调试日志输出,并且运行单独的测试,我想要经常看到TRACE输出。

为了避免每次编辑我的log4j2.xml配置的必要性,我编写了log4j配置,以便在此特定测试中将日志记录级别提高到INFO,如programmatically-change-log-level-in-log4j2所示:

@Before
public void beforeTest() {
    LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
    Configuration config = ctx.getConfiguration();
    LoggerConfig loggerConfig = config.getLoggerConfig(
        LogManager.ROOT_LOGGER_NAME);
    initialLogLevel = loggerConfig.getLevel();
    loggerConfig.setLevel(Level.INFO);
}

但它没有效果。

如果&#34; ROOT_LOGGER&#34;我在这里操作表示与log4j2.xml中的<root>相同的记录器,然后这不起作用,是吗?我需要覆盖所有其他记录器,或者完全关闭它,但是如何?

我在所有其他类中使用slf4j作为log4j2包装器会不会影响它?

我已尝试抓住Appender并使用append.stop(),但这并不起作用。

1 个答案:

答案 0 :(得分:0)

您可以将log4j2配置文件放在src / test / resources /目录中。在单元测试期间,将使用该文件。