一尘不染

使用logger.debug()之前是否需要Log4j isDebugEnabled()?

java

当我浏览一些代码时,我注意到使用logger的方式如下,

if(logger.isDebugEnabled())   
    logger.debug("Something..");

但是在某些代码中,我是这样观察的。

logger.debug("Something..");

当我查看log4j的源代码时,已检查debug()了Logger本身的方法
if(logger.isDebugEnabled())。那为什么我们需要这些不必要的开销呢if(logger.isDebugEnabled())


阅读 428

收藏
2020-12-03

共1个答案

一尘不染

当传递给您的字符串logger.debug(...)花费时间评估时,这很有用,在这种情况下,如果未启用调试,则可以跳过此评估。

if(logger.isDebugEnabled()) {
    logger.debug("The meaning of life is " + calculateMeaningOfLife());
}

IMO使得代码的可读性大大降低,因此只有在性能有了显着提高时才应使用它。

2020-12-03