我常常见到这个问题,到底使不使用idDebugEnabled属性。这个问题常常被争论,而焦点每每是性能。 apache
答案很简单。既然有这个属性,固然是拿来使用的。可是使用的时候须要注意。 性能优化
例如,在个人代码中,我以下使用。 性能
这个例子是一个好的实践。 优化
然而若是我按照以下的方式来使用,我以为就是没必要要的了。
this
那么是为何呢?这是由于类Category中的debug方法(由Log4j库的Logger类继承)已经检查了日志中的模式(即当前的日志级别)。org.apache.log4j.Category类中debug的代码以下: spa
所以上面的例子中,咱们能够不使用它来判断。那么何时须要使用isDebugEnabled属性呢? debug
例如,你有一个很 长的参数要在debug模式下输出: 日志
在这样的状况下,能够清楚的说,不要使用它。若是Tree.getXMLText方法从App中获取出来,可是没有使用的话,这样对性能会有很大的影响。所以,应该按照以下的方式来使用: 继承
所以,在上面的例子中,使用log.isDebugEnabled()能够保证性能优化。 get