有多少人用Log4j的时候会在每一个Debug/Info之前加一个判断?
可能很多人都说了,这有什么关系,我在运行的时候是把Log Level设置成Error的。
那么请看下面这个代码:
String result;
...
...
...
logger.debug(”result is” + result );
再看看这个代码:
String result;
...
...
...
if(logger.isDebugEnabled())
{
logger.debug(”result is” + result );
}
把Log Level设置成ERROR,运行结果又区别吗?没有!!
程序的性能有区别吗?区别大了!!!
因为什么呢?
虽然第一段代码也不产生Log输出,但是debug()里面的字符串变量是实例化了,明白了吗?
这个就是为什么很多人抱怨Log4j占用很大CPU时间的原因了,尤其是在大循环的时候。
赶快在你的程序中加上这样的判断条件吧。
可能很多人都说了,这有什么关系,我在运行的时候是把Log Level设置成Error的。
那么请看下面这个代码:
String result;
...
...
...
logger.debug(”result is” + result );
再看看这个代码:
String result;
...
...
...
if(logger.isDebugEnabled())
{
logger.debug(”result is” + result );
}
把Log Level设置成ERROR,运行结果又区别吗?没有!!
程序的性能有区别吗?区别大了!!!
因为什么呢?
虽然第一段代码也不产生Log输出,但是debug()里面的字符串变量是实例化了,明白了吗?
这个就是为什么很多人抱怨Log4j占用很大CPU时间的原因了,尤其是在大循环的时候。
赶快在你的程序中加上这样的判断条件吧。