当我浏览一些代码时,我注意到使用logger的方式如下,
if(logger.isDebugEnabled()) logger.debug("Something..");
但是在某些代码中,我是这样观察的。
logger.debug("Something..");
当我查看log4j的源代码时,已检查debug()了Logger本身的方法 if(logger.isDebugEnabled())。那为什么我们需要这些不必要的开销呢if(logger.isDebugEnabled())?
debug()
if(logger.isDebugEnabled())
当传递给您的字符串logger.debug(...)花费时间评估时,这很有用,在这种情况下,如果未启用调试,则可以跳过此评估。
logger.debug(...)
if(logger.isDebugEnabled()) { logger.debug("The meaning of life is " + calculateMeaningOfLife()); }
IMO使得代码的可读性大大降低,因此只有在性能有了显着提高时才应使用它。