文章詳情頁
java - 為什么Log記錄日志要先做一個判斷
瀏覽:80日期:2023-12-27 11:04:51
問題描述
為什么Log記錄日志要先做一個判斷了?如下。
if (logger.isErrorEnabled()){logger.error(msg,e); } 還有就是logger.isDebugEnabled和logger.isInfoEnable 等等?
問題解答
回答1:換下面這個例子就明白了。
if (log.isDebugEnabled()) { log.debug('log ' + param1 + ' ...');}
在記錄日志時很多情況下都會記錄一些參數信息,在使用jcl做為日志接口時難免少不了要拼接字符串,但是日志有不同的級別(level)在線上運行時正常情況是不會將所有日志級別的日志都記錄下來。
在使用jcl時如果不增加日志級別判斷。直接這樣使用log.debug('log ' + param1 + ' ...');會產生很多不需要的String對象,這些String實際沒有產生作用,浪費了執行時間,同時gc也需要大量回收這種垃圾對象,這也就是在使用jcl時需要增加判斷的原因。
當然我們現在可以直接使用slf4j利用占位符來減少這種if判斷。如log.debug('log {} ...', param1)slf4j
標簽:
java
相關文章:
1. javascript - vscode alt+shift+f 格式化js代碼,通不過eslint的代碼風格檢查怎么辦。。。2. javascript - 如何將一個div始終固定在某個位置;無論屏幕和分辨率怎么變化;div位置始終不變3. html5 - 有可以一次性把所有 css外部樣式轉為html標簽內style=" "的方法嗎?4. javascript - 有什么比較好的網頁版shell前端組件?5. java - 如何寫一個intellij-idea插件,實現編譯時修改源代碼的目的6. javascript - 原生canvas中如何獲取到觸摸事件的canvas內坐標?7. java 中Long 類型如何轉換成Double?8. javascript - 求解答:實例對象調用constructor,此時constructor內的this的指向?9. html - vue項目中用到了elementUI問題10. javascript - [js]為什么畫布里不出現圖片呢?在線等
排行榜
