2014-03-24 103 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,那麼你會想要避免字符串構造,而是使用布爾檢查。

這是一個很小的差異,但在大型應用程序中,此字符串構造以及關聯的垃圾回收可能會成爲性能影響的一個點。但是,如果您傳遞靜態字符串,則實際上會創建一個重複檢查,該檢查雖然也很小,但可能會對性能產生影響。