亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 想偷懶,水平不夠 (求perl腳本) [打印本頁]

作者: admove    時(shí)間: 2007-07-06 09:21
標(biāo)題: 想偷懶,水平不夠 (求perl腳本)
本來發(fā)在ruby版的,想增加人氣,但是沒人回答。這里人氣高一些,應(yīng)該好一些吧。

看到本版【專題交流】我今天又偷懶了,也想偷懶一下,
但是限于水平不夠。就請大家?guī)蛶兔Α?br /> 主要就是想有一個(gè)perl腳本完成一個(gè)小任務(wù),按照要求批量的修改java文件,減輕一點(diǎn)工作量。

言歸正傳,看下面的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是要判斷設(shè)置的log級別的,總共也就fatal,error,warn,info,debug這么幾個(gè)。
像A處的代碼就判斷了是否可以寫debug級別的log,然后再寫入具體的log內(nèi)容。
而B和C處圖省事,沒有判斷級別就直接做了。
相應(yīng)正確的代碼應(yīng)該是:

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

}



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

}


我想對一個(gè)目錄下的所有java文件都判斷一下,如果已經(jīng)像A處一樣判斷了log級別,啥事也不做。
不然的話,就把形如開始的B和C的代碼改成后來修正過的一樣。

希望效率高一點(diǎn)。
謝謝

[ 本帖最后由 admove 于 2007-7-6 09:56 編輯 ]
作者: flw    時(shí)間: 2007-07-06 09:44
你這個(gè)類設(shè)計(jì)的就有問題。
為什么不在 log.info 內(nèi)部判斷?
作者: admove    時(shí)間: 2007-07-06 09:51
原帖由 flw 于 2007-7-6 09:44 發(fā)表
你這個(gè)類設(shè)計(jì)的就有問題。
為什么不在 log.info 內(nèi)部判斷?


是這樣的
這用了apache的一個(gè)子項(xiàng)目log4j。
通用的做法如下:
log的級別在一個(gè)配置文件里定義。
在開發(fā)階段,把級別定低一點(diǎn),比如所有級別都可以寫

但是到了發(fā)布的時(shí)候,定高一點(diǎn)。比如只允許error級別的可以寫,開發(fā)階段的什么debug,info的log統(tǒng)統(tǒng)不讓出。

至于log4j類設(shè)計(jì)的問題,我就沒有發(fā)言權(quán)了。
作者: flw    時(shí)間: 2007-07-06 09:55
原帖由 admove 于 2007-7-6 09:51 發(fā)表


是這樣的
這用了apache的一個(gè)子項(xiàng)目log4j。
通用的做法如下:
log的級別在一個(gè)配置文件里定義。
在開發(fā)階段,把級別定低一點(diǎn),比如所有級別都可以寫

但是到了發(fā)布的時(shí)候,定高一點(diǎn)。比如只允許error ...

你確信不判斷直接調(diào)用 log.info() 在 info disable 下的情況下也一定會(huì)輸出信息?
作者: 福瑞哈哥    時(shí)間: 2007-07-06 10:00
原帖由 flw 于 2007-7-6 09:55 發(fā)表

你確信不判斷直接調(diào)用 log.info() 在 info disable 下的情況下也一定會(huì)輸出信息?


是啊,理論上log.info應(yīng)該在日志級別高于info時(shí)什么也不顯示的啊。
作者: admove    時(shí)間: 2007-07-06 10:04
原帖由 flw 于 2007-7-6 09:55 發(fā)表

你確信不判斷直接調(diào)用 log.info() 在 info disable 下的情況下也一定會(huì)輸出信息?


確實(shí),你說的對。
它的等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
如果配置為WARN這樣只顯示W(wǎng)ARN, ERROR和FATAL的log信息,而INFO信息不會(huì)被顯示。

所以,我的問題有些問題。
現(xiàn)在我是想完成這個(gè)任務(wù)本身,至于具體是否有必要,暫時(shí)不去考慮了。

謝謝回答!
作者: flw    時(shí)間: 2007-07-06 10:07
有些工具很好用,比如 Perl、Vim 等等,
但是工具只起一個(gè)輔助作用,
不能因?yàn)楣ぞ吲了,寫程序時(shí)心眼就不夠了。
我前陣子就見過一個(gè)活生生的例子:
這是一個(gè)用 ESQL 操作數(shù)據(jù)庫的 C 程序,
每個(gè)函數(shù)的一開始先定義幾十個(gè)變量:

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

這樣寫上幾十行,
然后接下來不論分說先
memset( field1, 0x00, sizeof(field1) );
memset( field2, 0x00, sizeof(field1) );
又是幾十行,
下面還有很多垃圾代碼就不一而述了,
后來我問了相關(guān)人等,說是原作者經(jīng)常在別人面前吹噓 vim。
看來他是用 vim 批量生成的啊。怪不得才能寫出如此垃圾的代碼。
作者: flw    時(shí)間: 2007-07-06 10:08
原帖由 admove 于 2007-7-6 10:04 發(fā)表


確實(shí),你說的對。
它的等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,
如果配置為WARN這樣只顯示W(wǎng)ARN, ERROR和FATAL的log信息,而INFO信息不會(huì)被顯示。

所以,我的問題有些問題。
現(xiàn)在我是想 ...

這樣的問題還是不要討論了比較好。




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2