有多少人用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时间的原因了,尤其是在大循环的时候。
赶快在你的程序中加上这样的判断条件吧。
Log4j优化
最新推荐文章于 2025-03-18 12:33:59 发布
博客指出很多人使用Log4j时不在Debug/Info前加判断。通过代码对比,即便将Log Level设为ERROR,加判断和不加判断虽运行结果无差异,但程序性能差别大。不加判断时debug里字符串变量会实例化,这是Log4j占CPU时间多的原因,建议程序中添加判断条件。

1万+

被折叠的 条评论
为什么被折叠?



