2013-04-04 130 views
2

我做代码审查,我想你对一小块代码思想:Log4J - 测试日志级别有用吗?

if(logger.isDebugEnabled()) 
{ 
    logger.debug("debug log"); 
} 

是否有这样做的测试if(logger.isDebugEnabled())的真正原因/收益?

为什么不直接写logger.debug("debug log");没有测试?

+5

您在询问之前是否尝试过寻找它? http://stackoverflow.com/questions/963492/in-log4j-does-checking-isdebugenabled-before-logging-improve-performance – BobTheBuilder 2013-04-04 11:23:34

+0

@baraky是的,这正是我正在寻找。感谢您的链接(在发布我的问题之前没有找到它) – TheEwook 2013-04-04 11:26:35

回答

5

这对您提供的示例没有用处。

logger.debug("Info: " + someObject.getSomeInformation()); 

注意,方法getSomeInformation将在someObject被称为logger.debug之前被调用,水平是否调试与否:但是如果您在日志行中的其他数据,例如,它可以是有用的。此外,将执行字符串连接。为了避免方法调用和字符串连接的代价,你可以在你的问题中加入if

+0

'请注意getSomeInformation方法将在logger.debug之前在someObject上调用'我不知道这一点。事实上,现在我可以看到差异。感谢您的洞察力;) – TheEwook 2013-04-04 11:28:09

相关问题