Chinaunix
标题:
问个问题 关于log的写法 [已解决]
[打印本页]
作者:
realmon
时间:
2010-05-19 14:56
标题:
问个问题 关于log的写法 [已解决]
本帖最后由 realmon 于 2010-05-24 10:25 编辑
if(logger.isDebugEnabled()){
logger.debug("*****");
}
复制代码
为什么要写这个if
作者:
sakulagi
时间:
2010-05-20 09:20
用来控制什么情况下需要记录日志,如果没有设置debug标志的话,就不需要写日志。不过我觉得在debug()方法里判断也是一样的。看你的logger是怎么设计的了
作者:
realmon
时间:
2010-05-20 16:34
补充一下,我说的是apache的common logging
日志级别 比debug高的话,不写上面的if也不会输出log
所以搞不懂为什么要写 if(logger.isDebugEnabled())
作者:
0vk0
时间:
2010-05-20 23:53
是为了通用性,也许其它的机器会出现这样的问题
作者:
kafka0102
时间:
2010-05-22 15:17
回复
4#
0vk0
对于像debug级别,线上的服务通常是关闭的,这使得debug函数会有开销。这个开销有两方面:
1、判断log级别,也就是isDebugEnabled函数,这个调用的开销很小的。
2、log的参数构造,很多情况下,log函数的参数是如"xxx"+"dd"+object.toString()这样的字符串拼接,这个开销还是有一些的。
所以,为了降低debug级别带来的开销问题,通常就是加了一层判断。如果debug日志很多,这个判断有时就显得重要了。
作者:
realmon
时间:
2010-05-24 10:24
回复
5#
kafka0102
原来如此,学习了!
作者:
surpass_li
时间:
2010-05-24 12:53
五楼说的很有道里
作者:
gnah
时间:
2010-05-27 22:30
{:3_182:}
作者:
asdmonster
时间:
2010-05-28 09:37
回复
2#
sakulagi
樱木斑竹,驾临java版啦。{:3_187:}
作者:
asdmonster
时间:
2010-05-28 09:41
回复
1#
realmon
简单的说,就是这段代码写错了,写代码的人水平菜。
判断日志级别这种事应该是组件自己去做的,怎么可能放到应用代码里面?
至于所谓的构造实参的代价,远小于你调用函数的代价。
作者:
人生美妙
时间:
2010-05-28 11:54
提示:
作者被禁止或删除 内容自动屏蔽
作者:
realmon
时间:
2010-05-28 18:12
回复
10#
asdmonster
不是写错,spring的source里就有这样的代码
作者:
realmon
时间:
2010-05-28 18:13
回复
11#
人生美妙
不要利用我的帖子做广告
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2