社区
Java SE
帖子详情
为什么要写 if (log.isDebugEnabled()) {}?
dddeee
2007-01-19 04:39:37
在使用log4j,common-log这样的log框架时,发现很多代码中这样写
if (log.isDebugEnabled()) {
log.debug("xxxx");
}
我很奇怪,为什么要与log.isDebugEnabled()?既然log.debug()在没有指定输出级别为DEBUG时不会有输出,为什么还要在前面加一个isDebugEnabled()的判断?
...全文
1379
7
打赏
收藏
为什么要写 if (log.isDebugEnabled()) {}?
在使用log4j,common-log这样的log框架时,发现很多代码中这样写 if (log.isDebugEnabled()) { log.debug("xxxx"); } 我很奇怪,为什么要与log.isDebugEnabled()?既然log.debug()在没有指定输出级别为DEBUG时不会有输出,为什么还要在前面加一个isDebugEnabled()的判断?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wa327114652
2010-06-24
打赏
举报
回复
谢谢,顶!
lxsgoodluck
2008-11-14
打赏
举报
回复
学习
hanhongmin
2008-08-26
打赏
举报
回复
学习了,顶~
dddeee
2007-01-22
打赏
举报
回复
谢谢,我明白了!
shine333
2007-01-19
打赏
举报
回复
加不加if,效果相同,但是效率不同
在你的例子里,debug的参数就是一个string,所以没有太本质的差别
但是假如log.debug("map=" + map)的话,在调用debug之前,必然需要调用map.toString(),而这个操作可能导致更多的大量字符串操作,最后,才能得到这个辛辛苦苦拼接出来的结果,作为参数传入debug(),结果,这个参数却不需要(一般在log方法入口就判断输出level)。
ChDw
2007-01-19
打赏
举报
回复
为了效率,如果上述那个代码那么简单是没有必要的
但是如果这样
if (log.isDebugEnabled()) {
log.debug(buildFullString());
}
如果这个buildFullString效率不太高,那么如果直接写log.debug(buildFullString());的话
虽然它不会打印语句,但是buildFullString还是被执行了,这样就白费了功夫
所以加上isDebugEnabled就可以避免执行buildFullString了
这个方法一般用在认为buildFullString这个函数效率不太高的情况下
wjs2338
2007-01-19
打赏
举报
回复
框架源码倒没研究过
log
.is
Debug
Enab
led
()的使用
在使用
log
4j,common-
log
这样的
log
框架时,发现很多代码中这样
写
if (
log
.is
Debug
Enab
led
()) {
log
.
debug
( "xxxx "); } 我很奇怪,为什么要与
log
.is
Debug
Enab
led
()?既然
log
.
debug
()在没有指定输出级别为
DEBUG
时不会有输出,为什么还要在前面加一个is
Debug
Enab
led
...
Java日志框架中真的需要判断
log
.is
Debug
Enab
led
()吗?
很多人在使用日志框架时进行
debug
()输出时都会先判断一下当前的日志级别,如:if (
log
.is
Debug
Enab
led
()) {
log
.
debug
(... ...); }实际上,在多数时候这是不必要的。为什么要提前判断?在N久以前,很多日志框架都不支持{}模板的
写
法(如
Log
4j1.X, Apache Commons
Log
ging),于是只能通过字符串拼接来输出日志内容:
log
.d
if (
log
.is
Debug
Enab
led
()) {}使用场景初析
一:问题:
在使用
log
4j,common-
log
这样的
log
框架时,发现很多代码中这样
写
if (
log
.is
Debug
Enab
led
()) {
log
.
debug
( "xxxx ");
}
我很奇怪,为什么要与
log
.is
Debug
Enab
led
()?既然
log
.
debug
()在没有指定输出级别为
DEBUG
时不会有输出,为什么还要在前面加一个is
Debug
Enab
led
log
.is
Debug
Enab
led
()的作用
log
.is
Debug
Enab
led
()的作用
【
log
4j】日志打印必须使用
log
.is
Debug
Enab
led
()?不使用会消耗系统资源?
关于日志的打印是否需要使用if(
log
.is
Debug
Enab
led
()){}的形式的刨根问底
Java SE
62,623
社区成员
307,257
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章