如果测试失败,Log4j appender用于调试输出

时间:2014-09-24 10:50:13

标签: java junit log4j junit-rule

我想设置我的测试日志记录,以便主要抑制日志输出 - 除非测试失败。那我想得到调试输出。

我知道只是修改测试类路径中的log4j.properties的手动解决方案,或者只是让测试的调试日志始终处于活动状态 - 但我不想用绿色测试的无效输出向控制台发送垃圾邮件。

对于失败的测试,我希望自动构建能够在出现一些令人讨厌的环境问题的情况下为我提供调试输出。

我一直在想应该有一个可以与一个junit规则结合使用的appender,直到测试结果已知,然后只有在测试失败的情况下才会记录到另一个appender。

我自己可能会做到这一点,但我想知道是否有人之前尝试过这个问题,或者是否有更好的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以添加一个记录到单独记录器的观察程序。

public class MyUnitTest {

  private static Logger errorLog = Logger.getLogger("ErrorLogger");

  @Rule
  public TestWatcher testWatcher = new TestWatcher() {
    @Override
    protected void failed(Throwable e, Description description) {
        errorLog.debug(description.toString(), e);
        super.failed(e, description);
    }
  };

}

然后只需将ErrorLogger添加到log4j属性

log4j.logger.ErrorLogger=debug, someAppender