为什么记录器 Java 需要检查 isDebugEnabled()?

Why does a logger Java need check isDebugEnabled()?

为什么 java 记录器需要检查

if (log.isDebugEnabled()) {
   log.debug("Debug message");
}

而是直接调用 log.debug("Debug message");?

没有。通常,当您需要一些额外的代码来记录您想要的内容时,您会调用 log.isDebugEnabled()

if (log.isDebugEnabled()) {
    for (...) {
        // Some heavy logic that is only needed when logging things
        log.debug("Debug message");
    }
}

这样您就不会在不需要时触发额外的逻辑。

@1615903的回答外:

您可以配置不同的 levels 日志记录。对于某些环境,您可能希望禁用 DEBUG 级别,日志引擎 (SLF4J) 不会将这些消息放入日志中,但代码 (log.debug("...")) 仍会执行,这在禁用 DEBUG 级别时完全没有用。使用 isXXXEnabled() 可以避免多余的工作。