列印日誌時為什麼要使用isDebugEnabled 、isInfoEnabled
列印日誌時為什麼要使用isDebugEnabled 、isInfoEnabled
轉載:https://blog.csdn.net/hjun01/article/details/41442567
對於列印的資訊沒有字元拼接或者物件(說白了沒有tostring的方法呼叫),如果列印的資訊是固定字串的話,就加上面的判斷和不加其實意義是一樣的
log4j中log.isDebugEnabled(), log.isInfoEnabled()和log.isTraceEnabled()作用
專案在應用log4j列印Debug,Info和Trace級別的log時需要加上對應的三個方法進行過濾,程式碼如下:
if (log.isDebugEnabled()) {
log.debug(" From: " + req.getFrom().toString() +
" To: " + req.getTo().toString() +
" CallId: " + req.getCallId() +
" msg:" + msg);
}
其作用是因為Debug,Info和Trace一般會列印比較詳細的資訊,而且列印的次數較多,如果我們不加log.isDebugEnabled()等
進行預先判斷,當系統loglevel設定高於Debug或Info或Trace時,雖然系統不會答應出這些級別的日誌,但是每次還是會拼接
引數字串,影響系統的效能。
2.錯誤的優化方法
部分編碼人員因為不瞭解機制,從程式碼複用性和簡潔性而言定義如下函式來封裝
private void debug(String msg) {
if (log.isDebugEnabled()) {
log.debug(msg);
}
}
其實這種封裝方式是錯誤的,因為當系統中呼叫debug(msg)函式還是出現字串的拼接
相關文章
- 為什麼要Supplemental Log(追加日誌)
- 日誌審計是什麼?為什麼企業需要日誌審計?
- 日誌脫敏是什麼意思?為什麼要做日誌脫敏?用什麼工具好?
- java日誌列印使用指南Java
- 為何要列印日誌?C++在高併發下如何寫日誌檔案(附原始碼)?C++原始碼
- 【Spring】日誌列印sql,日誌配置列印sqlSpringSQL
- 為什麼要虛擬化,為什麼要容器,為什麼要Docker,為什麼要K8S?DockerK8S
- Open Feign使用方法、等待時間、日誌列印功能
- rman備份後為什麼要同時備份歸檔日誌
- Object-C使用NSLog列印日誌Object
- Unity——日誌列印工具Unity
- 日誌--列印規範
- Log 工具列印日誌
- 雲列印為什麼這麼便宜?
- 為什麼要removeREM
- 為什麼要敏捷?敏捷
- 39,日誌列印sql 配置SQL
- MySQL列印死鎖日誌MySql
- 日誌到底該如何列印?
- mybatis列印sql日誌配置MyBatisSQL
- Qmail日誌中為什麼會出現"CNAMElookupfailedtemporarily"(轉)AI
- Flutter | 日誌還能這麼列印,太秀了!Flutter
- 什麼是介面?為什麼使用介面? 什麼時候使用介面?(轉)
- 為什麼要code reviewView
- python 使用 loguru 輸出異常日誌同時列印變數值Python變數
- MySQL什麼時候輪換二進位制日誌MySql
- 為什麼要謹慎使用Linux find命令?Linux
- 為什麼說Java中要慎重使用繼承Java繼承
- 為什麼要學習和使用C語言?C語言
- feign配置日誌不列印
- Tornado按天列印日誌
- 設定mybatis 是否列印日誌MyBatis
- python怎麼將列印輸出日誌檔案Python
- GC 為什麼要掛起使用者執行緒? 什麼愁什麼怨?GC執行緒
- 為什麼計算機時間要從1970年1月1日開始算起計算機
- 為什麼計算機時間要從1970年1月1日開始算起?計算機
- 【recovery】android使用串列埠列印recovery除錯日誌Android串列埠除錯
- [Java/日誌] 日誌框架列印應用程式日誌程式碼的執行情況Java框架