我使用< em > Log4J < / em >在我的应用程序日志。之前我使用的调试调用如下:
选项1:
logger.debug("some debug text");
但是一些链接建议最好先检查isDebugEnabled()
,比如:
选项2:
boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
logger.debug("some debug text");
}
所以我的问题是“选项2能提高性能吗?”。
因为在任何情况下Log4J框架对debugEnabled都有相同的检查。对于选项2,如果我们在一个方法或类中使用多个调试语句可能是有益的,其中框架不需要多次调用isDebugEnabled()
方法(每次调用);在这种情况下,它只调用isDebugEnabled()
方法一次,如果Log4J被配置为调试级别,那么实际上它会调用isDebugEnabled()
方法两次:
我不认为如果我们在方法或类中编写多个logger.debug()
语句并根据选项1调用debug()
方法,那么与选项2相比,Log4J框架的开销是很大的。由于isDebugEnabled()
是一个非常小的方法(就代码而言),它可能是内联的好候选。