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