我常常見到這個問題,到底使不使用idDebugEnabled屬性。這個問題常常被爭論,而焦點每每是性能。 apache
答案很簡單。既然有這個屬性,固然是拿來使用的。可是使用的時候須要注意。 性能優化
例如,在個人代碼中,我以下使用。 性能
這個例子是一個好的實踐。 優化
然而若是我按照以下的方式來使用,我以爲就是沒必要要的了。
this
那麼是爲何呢?這是由於類Category中的debug方法(由Log4j庫的Logger類繼承)已經檢查了日誌中的模式(即當前的日誌級別)。org.apache.log4j.Category類中debug的代碼以下: spa
所以上面的例子中,咱們能夠不使用它來判斷。那麼何時須要使用isDebugEnabled屬性呢? debug
例如,你有一個很 長的參數要在debug模式下輸出: 日誌
在這樣的狀況下,能夠清楚的說,不要使用它。若是Tree.getXMLText方法從App中獲取出來,可是沒有使用的話,這樣對性能會有很大的影響。所以,應該按照以下的方式來使用: 繼承
所以,在上面的例子中,使用log.isDebugEnabled()能夠保證性能優化。 get