2014-03-24 159 views
0

出于好奇,有什么好处登陆(使用log4j的),使用上述方法时:调试消息记录

if (LOGGER.isDebugEnabled()) { 
    LOGGER.debug("New Session Created"); 
} 

,而不仅仅是:

LOGGER.debug("New Session Created"); 

是它只是一个(潜在)性能增强,它仍然是相关的?这应该用于包装所有的调试输出?

感谢您的想法!

+1

在使用logger.debug()之前必要的[Log4j isDebugEnabled()是否可能重复?](http://stackoverflow.com/questions/17850614/is-log4j-isdebugenabled-necessary-before-using-logger-debug ) – devnull

+0

另请参阅http://stackoverflow.com/questions/963492/in-log4j-does-checking-isdebugenabled-before-logging-improve-performance – devnull

回答

1

在你的用例中,不,没有任何好处。

但是,如果你正在构造一个新的字符串,例如“新建会话创建”+ SessionID,那么你会想要避免字符串构造,而是使用布尔检查。

这是一个很小的差异,但在大型应用程序中,此字符串构造以及关联的垃圾回收可能会成为性能影响的一个点。但是,如果您传递静态字符串,则实际上会创建一个重复检查,该检查虽然也很小,但可能会对性能产生影响。