我想在运行测试时禁用特定的日志输出(在本例中为InterruptedException日志记录),但我不想在生产中禁用它。
这样做的原因是,即使在测试被拆除时通过测试,它也会产生很多噪音。
在下面的代码中,我在运行测试时禁用log.warn("Handling InterruptedException", failure)
。目前我将一个标志isLogInterruptedExceptionsEnabled
传递给此类,该类在代码中被检查,但由于几个原因,这很难看。
@Override
public void run() {
log.debug("Enter run method");
try {
while (!Thread.currentThread().isInterrupted()) {
try {
// some code
} catch (Throwable failure) {
if (!isCausedByInterruptedException(failure)) {
log.error("Handling failure", failure);
} else if (isLogInterruptedExceptionsEnabled) {
log.warn("Handling InterruptedException", failure);
}
// some code
}
}
} catch (InterruptedException ex) {
log.warn("Exception handling was interrupted. Exiting Supervisor.", ex);
// some code
}
log.debug("Exit run method because interrupted");
}
有没有更好的方法来禁用某些特定的日志记录输出? 也许还有可能不记录完整的strack跟踪,这也是一个不错的选择。 我也在考虑将日志级别设置为ERROR,这也是一个选项,但在其他情况下可能没有。
答案 0 :(得分:0)
将日志属性文件(例如log4j.properties,如果使用Log4J)添加到测试依赖项(例如./src/test/resources,如果使用Maven),它将日志记录级别设置为降低级别(关闭偶数)。如果您不需要详细的日志记录测试,这是理想的,因为您依赖断言并且很容易切换回来进行调试测试。