【发布时间】:2016-02-22 19:43:40
【问题描述】:
几乎在每个项目中,我都使用 Log4j 或 Slf4j 和 logback 来记录事件,并且几乎在任何地方我都必须编写类似的东西
if (log.isDebugEnabled()) {
log.debug("I'm here doing this stuff");
}
有时您看不到所有这些日志记录代码的实际方法逻辑。
我无法删除 log.isDebugEnabled() 检查,因为即使我使用带有 {} 功能的 Slf4j,如果未启用调试(或任何级别),也可能会计算并删除一些日志信息。
log.debug("Here is the data: {}", calculateDataFromSeveralDataSourcesDuh());
这里的问题是:有没有办法推迟日志信息计算,所以只有在启用适当的日志级别而不检查应用程序代码的情况下才会计算它?
如果我不能使用 Java 8 并且我正在使用 Slf4j api,那么有哪些可能的选择,因此 Log4j2 不可用?
【问题讨论】: