SLF4J:isDebugEnabled()无效

时间:2017-08-22 12:28:24

标签: java slf4j jmx

我正在使用SLF4J的java应用程序在Unix机器上运行,我的代码有以下条目:

if (LOG.isDebugEnabled())
                    LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote");

我尝试通过JMX启用ALL或DEBUG或TRACE的日志记录,但仍然没有打印日志语句。所有声明没有" isDebugEnabled()"打印出来。

有什么想法可以做些什么来启用这些日志语句?我无法更改logback.xml,只能使用JMX来更改日志级别。

1 个答案:

答案 0 :(得分:0)

如果我理解正确的话,当你说“没有isDebugEnabled()的所有陈述被打印”时,你的意思就是打印出来了:

LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote");

但这不是:

if (LOG.isDebugEnabled())
    LOG.debug("There is nothing in the cache for " + quote.getObject().getObjectId() + " - using the init quote");

这没有意义,因为LOG.debug()在内部会相当于if (isDebugEnabled())。因此,您应该通过调试器运行代码以了解正在发生的事情。

如果您的意思是LOG.debug(...)没有打印但其他级别没有打印,您应该按照@ a_a注释中的链接将程序设置级别设置为Debug。