【发布时间】:2018-08-30 05:56:15
【问题描述】:
我有一个案例,我想介绍一些错误日志记录。但在这一点上,我不确定这里会多久发生一次异常(实验性功能,错误取决于用户输入),我有点担心堆栈跟踪会淹没日志。
所以我想出了这个解决方案:
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。
【问题讨论】:
-
这不是“滥用”——实际上我觉得它很聪明。事实是:它仍然是一个错误,只是你想在调试时有更详细的日志。因此,如果这是您的意图,那么这正是您的代码所做的。合法的,恕我直言。
-
你用的是什么Logger?
-
是org.slf4j.Logger
-
另一种选择可能是拥有两个记录器 - 一个“详细”和一个“简要” - 大概可以单独配置和启用。
-
@Henry 同意生产代码。但是 OP 说这是一个“实验性功能”——所以我认为对无意中淹没日志的担忧是合理的。但是:如果它只是一个(可能)错误的地方,也许另一种选择是设置一个“死时间”?
标签: java logging exception-handling slf4j