我有一个案例,我想介绍一些错误记录。但是在这一点上我不确定异常将在多久发生(实验性功能,错误取决于用户输入)而且我有点担心使用堆栈跟踪泛滥日志。
所以我提出了这个解决方案:
catch (Exception ex) {
if (LOGGER.isDebugEnabled()) {
LOGGER.error("Exception during save()", ex); // log with stacktrace
} else {
LOGGER.error("Exception during save(): {}", ex.toString());
}
}
但我对此并不满意,因为我觉得滥用调试级别来记录错误级别。我使用org.slf4j.Logger
。
答案 0 :(得分:0)
如果您只关心不使用不相关的堆栈跟踪垃圾邮件,您仍然可以不滥用日志级别的想法,而是接受它:
catch (Exception ex) {
LOGGER.error("Exception during save(): {}", ex.toString());
LOGGER.debug("Detailed exception output:", ex);
}
使用isDebugEnabled
得分的建议解决方案在性能上更好一点,因为除非你确实需要,否则不会为第二次调用创建String对象(第一个参数)。而且你还可以在调用堆栈中保留一个级别。