Logback / SLF4J - 是否有配置设置以防止打印出堆栈跟踪?

时间:2017-01-23 21:58:14

标签: testing mocking logback stack-trace

在我的应用程序代码中,我有一种情况,我希望使用堆栈跟踪和所有内容完全打印出异常。

在我针对这种情况的测试代码中,当我故意doThrow()来测试此异常的处理时,我仍然希望记录错误,但没有堆栈跟踪,部分是为了防止日志混乱,部分为了防止测试代码浪费时间打印堆栈跟踪,我不需要。

我可以在logback-test.xml中执行此操作吗?

1 个答案:

答案 0 :(得分:0)

好吧,我确实找到了一个解决方法......但它不适用于TDD纯粹主义者。

在我测试的app类中(它实际上可能是某个实用程序类,然后被任何app类使用)我把它放在:

private boolean printErrorStackTrace = true;
void setPrintErrorStackTrace( boolean doPrint ){
    printErrorStackTrace = doPrint;
}

再次在app类中,我从这个

更改了LOGGER行
LOGGER.error(String.format("file was %s", documentFile), e);

到此:

LOGGER.error(String.format("file was %s", documentFile), 
                printErrorStackTrace? e : null );

然后在我的测试方法中我把它:

appClass.setPrintErrorStackTrace( false );

...显然我们被告知不允许测试代码进入应用程序代码...但当然我可以在条件子句中使用方法getPrintErrorStackTrace()然后嘲笑测试代码中的方法。但那会不会是异端邪说?我们还被告知不要仅仅为了帮助测试而添加功能。

但我的日志现在看起来更干净了......