文章詳情頁
java - 為什么Log記錄日志要先做一個判斷
瀏覽:67日期: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 + ' ...');}
在記錄日志時很多情況下都會記錄一些參數(shù)信息,在使用jcl做為日志接口時難免少不了要拼接字符串,但是日志有不同的級別(level)在線上運行時正常情況是不會將所有日志級別的日志都記錄下來。
在使用jcl時如果不增加日志級別判斷。直接這樣使用log.debug('log ' + param1 + ' ...');會產(chǎn)生很多不需要的String對象,這些String實際沒有產(chǎn)生作用,浪費了執(zhí)行時間,同時gc也需要大量回收這種垃圾對象,這也就是在使用jcl時需要增加判斷的原因。
當(dāng)然我們現(xiàn)在可以直接使用slf4j利用占位符來減少這種if判斷。如log.debug('log {} ...', param1)slf4j
標簽:
java
相關(guān)文章:
1. 注冊賬戶文字不能左右分離2. JavaScript事件3. html5 - ElementUI table中el-table-column怎么設(shè)置百分比顯示。4. javascript - table列過多,有什么插件可以提供列排序和選擇顯示列的功能5. python - 使用readlines()方法讀取文件內(nèi)容后,再用for循環(huán)遍歷文件與變量匹配時出現(xiàn)疑難?6. javascript - ES6標準入門中l(wèi)et命令提到的for循環(huán)打印i是10,如果不用let怎么替換?7. showpassword里的this 是什么意思?代表哪個元素8. 對mysql某個字段監(jiān)控的功能9. python - 為什么正常輸出中文沒有亂碼,zip函數(shù)之后出現(xiàn)中文編程unicode編碼的問題,我是遍歷輸出的啊。10. html - vue項目中用到了elementUI問題
排行榜

熱門標簽