84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
为什么Log记录日志要先做一个判断了?如下。
if (logger.isErrorEnabled()){ logger.error(msg,e); } 还有就是logger.isDebugEnabled和logger.isInfoEnable 等等?
換下面這個例子就明白了。
if (log.isDebugEnabled()) { log.debug("log " + param1 + " ..."); }
在記錄日誌時很多情況下都會記錄一些參數信息,在使用jcl做为日志接口时难免少不了要拼接字符串,但是日志有不同的级别(level)在線上運行時正常情況是不會將所有日誌等級的日誌都記錄下來。
jcl
level
在使用jcl时如果不增加日志级别判断。直接这样使用log.debug("log " + param1 + " ...");会产生很多不需要的String对象,这些String实际没有产生作用,浪费了执行时间,同时gc也需要大量回收这种垃圾对象,这也就是在使用jcl時需要增加判斷的原因。
log.debug("log " + param1 + " ...");
String
gc
當然我們現在可以直接使用slf4j利用占位符来减少这种if判断。如log.debug("log {} ...", param1)slf4j
slf4j
if
log.debug("log {} ...", param1)
換下面這個例子就明白了。
在記錄日誌時很多情況下都會記錄一些參數信息,在使用
jcl
做为日志接口时难免少不了要拼接字符串,但是日志有不同的级别(level
)在線上運行時正常情況是不會將所有日誌等級的日誌都記錄下來。在使用
jcl
时如果不增加日志级别判断。直接这样使用log.debug("log " + param1 + " ...");
会产生很多不需要的String
对象,这些String
实际没有产生作用,浪费了执行时间,同时gc
也需要大量回收这种垃圾对象,这也就是在使用jcl
時需要增加判斷的原因。當然我們現在可以直接使用
slf4j
利用占位符来减少这种if
判断。如log.debug("log {} ...", param1)
slf4j