免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2125 | 回复: 7
打印 上一主题 下一主题

想偷懒,水平不够 (求perl脚本)  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-07-06 09:21 |只看该作者 |倒序浏览
本来发在ruby版的,想增加人气,但是没人回答。这里人气高一些,应该好一些吧。

看到本版【专题交流】我今天又偷懒了,也想偷懒一下,
但是限于水平不够。就请大家帮帮忙。
主要就是想有一个perl脚本完成一个小任务,按照要求批量的修改java文件,减轻一点工作量。

言归正传,看下面的Java代码:
public class LoginAction extends BaseAction {
        if (log.isDebugEnabled()) {
            log.debug("LoginAction  begin"); //A

        }

       //.....

       log.info("test info"); //B


       //.....

       log.warn("test warn");  //C


       //.....

}



一般来说写log是要判断设置的log级别的,总共也就fatal,error,warn,info,debug这么几个。
像A处的代码就判断了是否可以写debug级别的log,然后再写入具体的log内容。
而B和C处图省事,没有判断级别就直接做了。
相应正确的代码应该是:

if (log.isInfoEnabled()) {
    log.info("test info"); //B

}



if (log.isWarnEnabled()) {
    log.warn("test warn"); //C

}


我想对一个目录下的所有java文件都判断一下,如果已经像A处一样判断了log级别,啥事也不做。
不然的话,就把形如开始的B和C的代码改成后来修正过的一样。

希望效率高一点。
谢谢

[ 本帖最后由 admove 于 2007-7-6 09:56 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-07-06 09:44 |只看该作者
你这个类设计的就有问题。
为什么不在 log.info 内部判断?

论坛徽章:
0
3 [报告]
发表于 2007-07-06 09:51 |只看该作者
原帖由 flw 于 2007-7-6 09:44 发表
你这个类设计的就有问题。
为什么不在 log.info 内部判断?


是这样的
这用了apache的一个子项目log4j。
通用的做法如下:
log的级别在一个配置文件里定义。
在开发阶段,把级别定低一点,比如所有级别都可以写

但是到了发布的时候,定高一点。比如只允许error级别的可以写,开发阶段的什么debug,info的log统统不让出。

至于log4j类设计的问题,我就没有发言权了。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-07-06 09:55 |只看该作者
原帖由 admove 于 2007-7-6 09:51 发表


是这样的
这用了apache的一个子项目log4j。
通用的做法如下:
log的级别在一个配置文件里定义。
在开发阶段,把级别定低一点,比如所有级别都可以写

但是到了发布的时候,定高一点。比如只允许error ...

你确信不判断直接调用 log.info() 在 info disable 下的情况下也一定会输出信息?

论坛徽章:
0
5 [报告]
发表于 2007-07-06 10:00 |只看该作者
原帖由 flw 于 2007-7-6 09:55 发表

你确信不判断直接调用 log.info() 在 info disable 下的情况下也一定会输出信息?


是啊,理论上log.info应该在日志级别高于info时什么也不显示的啊。

论坛徽章:
0
6 [报告]
发表于 2007-07-06 10:04 |只看该作者
原帖由 flw 于 2007-7-6 09:55 发表

你确信不判断直接调用 log.info() 在 info disable 下的情况下也一定会输出信息?


确实,你说的对。
它的等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
如果配置为WARN这样只显示WARN, ERROR和FATAL的log信息,而INFO信息不会被显示。

所以,我的问题有些问题。
现在我是想完成这个任务本身,至于具体是否有必要,暂时不去考虑了。

谢谢回答!

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
7 [报告]
发表于 2007-07-06 10:07 |只看该作者
有些工具很好用,比如 Perl、Vim 等等,
但是工具只起一个辅助作用,
不能因为工具牛B了,写程序时心眼就不够了。
我前阵子就见过一个活生生的例子:
这是一个用 ESQL 操作数据库的 C 程序,
每个函数的一开始先定义几十个变量:

char field1[...];
char field2[...];
.....

这样写上几十行,
然后接下来不论分说先
memset( field1, 0x00, sizeof(field1) );
memset( field2, 0x00, sizeof(field1) );
又是几十行,
下面还有很多垃圾代码就不一而述了,
后来我问了相关人等,说是原作者经常在别人面前吹嘘 vim。
看来他是用 vim 批量生成的啊。怪不得才能写出如此垃圾的代码。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
8 [报告]
发表于 2007-07-06 10:08 |只看该作者
原帖由 admove 于 2007-7-6 10:04 发表


确实,你说的对。
它的等级可分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
如果配置为WARN这样只显示WARN, ERROR和FATAL的log信息,而INFO信息不会被显示。

所以,我的问题有些问题。
现在我是想 ...

这样的问题还是不要讨论了比较好。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP