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

Testing Logback/SLF4J-是否有防止打印堆栈跟踪的配置设置?,testing,mocking,logback,stack-trace,Testing,Mocking,Logback,Stack Trace,在我的应用程序代码中,我希望使用堆栈跟踪和所有内容完全打印出一个异常 在针对这种情况的测试代码中,当我故意doThrow()测试此异常的处理时,我仍然希望记录到错误,但没有堆栈跟踪,部分是为了防止日志混乱,部分是为了防止测试代码浪费时间打印我不需要的堆栈跟踪 在我的logback test.xml中有什么方法可以做到这一点吗?嗯,我确实找到了一个解决方法。。。但这不是为TDD纯粹主义者准备的 在测试中的我的应用程序类(它实际上可能是一些实用程序类,然后被任何应用程序类使用)中,我放了以下内容:

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

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


在我的logback test.xml中有什么方法可以做到这一点吗?

嗯,我确实找到了一个解决方法。。。但这不是为TDD纯粹主义者准备的

在测试中的我的应用程序类(它实际上可能是一些实用程序类,然后被任何应用程序类使用)中,我放了以下内容:

private boolean printErrorStackTrace = true;
void setPrintErrorStackTrace( boolean doPrint ){
    printErrorStackTrace = doPrint;
}
appClass.setPrintErrorStackTrace( false );
在app类中,我再次更改了日志记录行

LOGGER.error(String.format("file was %s", documentFile), e);
为此:

LOGGER.error(String.format("file was %s", documentFile), 
                printErrorStackTrace? e : null );
然后在我的测试方法中,我写下:

private boolean printErrorStackTrace = true;
void setPrintErrorStackTrace( boolean doPrint ){
    printErrorStackTrace = doPrint;
}
appClass.setPrintErrorStackTrace( false );
。。。显然,我们被告知不允许测试代码进入应用程序代码。。。但是我当然可以在条件子句中使用方法
getPrintErrorStackTrace()
。。。然后在测试代码中模拟该方法。但这会不会更不异端呢?我们还被告知不要仅仅为了帮助测试而添加功能

但是我的日志现在看起来干净多了