如果测试失败,用于调试输出的Log4j附加程序



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

我知道手动解决方案,只需修改测试类路径中的log4j.properties,或者只需让调试日志记录在测试中始终处于活动状态,但我不想在控制台上为绿色测试提供不必要的输出。

对于失败的测试,我希望自动构建能为我提供调试输出,以防出现一些严重的环境问题

我一直在想,应该有一个appender,它可以与junit规则相结合,在测试结果已知之前,它会支持输出,然后只有在测试失败时才会将日志记录推迟到另一个appenter。

我可能自己也可以做,但我想知道以前是否有人尝试过,或者是否有更好的解决方案。

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

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

相关内容

  • 没有找到相关文章

最新更新