我想设置我的测试日志记录,以便主要抑制日志输出——除非测试失败。那么我想要调试输出。
我知道手动解决方案,只需修改测试类路径中的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