由於代碼中部分日志想只在Debug模式下才打印出來,如果是Info模式就會顯得太多了。所以很自然的就想到直接LOG.debug(……)。但是看到了以前一個大牛的代碼,發現打印debug的時候都加了一層判斷,就是Log.isDebugEnabled(),看着很奇怪,既然已經是Debug模式,為什么還需要加這么一層判斷呢??
自己搜索了一下,原來這個問題別人也注意過,給出了這樣的回答,就是當要打印的debug信息比較復雜,比如我的就是,要把整個List打印出來,這時候就適合加Log.isDebugEnabled()判斷,原因如果不加,LOG還是會構造里面的串,如果比較復雜,構造了卻不打印,很浪費。所以這個時候最好加一層判斷。
當然,如果里面就是一個簡單的字符串,還是可以直接LOG.debug(……)而不需加判斷的。
最后,記住這種使用模式:
if (LOG.isDebugEnabled()) {
LOG.debug("Input Object/List/Map:" + Object/List/Map);
}
