在使用log4j,common-log这样的log框架时,发现很多代码中这样写
if (log.isDebugEnabled()) {
log.debug( "xxxx ");
}
我很奇怪,为什么要与log.isDebugEnabled()?既然log.debug()在没有指定输出级别为DEBUG时不会有输出,为什么还要在前面加一个isDebugEnabled()的判断?
为了效率,如果上述那个代码那么简单是没有必要的
但是如果这样
if (log.isDebugEnabled()) {
log.debug(buildFullString());
}
如果这个buildFullString效率不太高,那么如果直接写log.debug(buildFullString());的话
虽然它不会打印语句,但是buildFullString还是被执行了,这样就白费了功夫
所以加上isDebugEnabled就可以避免执行buildFullString了
这个方法一般用在认为buildFullString这个函数效率不太高的情况下
加不加if,效果相同,但是效率不同
在你的例子里,debug的参数就是一个string,所以没有太本质的差别
但是假如log.debug( "map= " + map)的话,在调用debug之前,必然需要调用map.toString(),而这个操作可能导致更多的大量字符串操作,最后,才能得到这个辛辛苦苦拼接出来的结果,作为参数传入debug(),结果,这个参数却不需要(一般在log方法入口就判断输出level)。
分享到:
相关推荐
POLYVLog_log.txt
nginx日志测试使用 access.log.zip
设置log4j的根目录,值为... log.debug("debug"); log.info("info"); log.warn("warn"); log.error("error"); log.fatal("fatal"); } public static void main(String[] args) { new Main().print(); }
Log.isLoggable的使用测试样例
from mongolog.handlers import MongoHandler log = logging.getLogger('demo') log.setLevel(logging.DEBUG) log.addHandler(MongoHandler.to(db='mongolog', collection='log')) log.debug('Some message') ...
applog.txt
解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar解析log.rar...
Windows XP Home版装IIS必须要的dll
在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Android Log有一定的帮助.android.util.Log常用的方法有以下5个:Log.v() Log....
debug_log.txt
汉化版sys_log.rar 汉化版sys_log.rar 汉化版sys_log.rar
Qualcomm平台开发如何抓取Log.
首先下载log4j.jar,放在WEB-INF/lib下,然后新建一个log4j.properties文件。在文件中配置已下配置项。 1. 配置Logger组件 ...if(log.isDebugEnabled()){ log.debug("==log is enable========"); }
3000帧动画图解MySQL为什么需要binlog、redo log和undo log.doc
log.sqllog.sqllog.sqllog.sqllog.sqlv
日志文件配置动态目录——log.zip
主要介绍了解决Android Studio Log.v和Log.d不显示的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
Debug_log.txtDebug_log.txtDebug_log.txtDebug_log.txtDebug_log.txtDebug_log.txt
Android源码,/platform/system/core/include/cutils/log.h