DANCE WITH JAVA

          開發(fā)出高質(zhì)量的系統(tǒng)

          常用鏈接

          統(tǒng)計(jì)

          積分與排名

          好友之家

          最新評(píng)論

          Log4J的一些小技巧和使用中一些須要注意的問題。


          一、為多個(gè)項(xiàng)目指定使用哪個(gè)log4j文件
          情況一:多個(gè)小項(xiàng)目合成一個(gè)大項(xiàng)目,多個(gè)小項(xiàng)目有自己不同的入口,這個(gè)時(shí)候如果使用同一個(gè)log4j文件,各個(gè)項(xiàng)目的輸
          出會(huì)混亂在一起,如果拆分成多個(gè)小項(xiàng)目,看起來又比較散不太好管理。
          情況二:一個(gè)項(xiàng)目實(shí)施在linux上,編寫在windows上,log4j的輸出目錄/opt/xxx/web.log
          這個(gè)時(shí)候開發(fā)者被迫必須在本機(jī)的workspace所在的目錄加入一個(gè)opt/xxx/web.log的目錄和文件
          同時(shí),大多數(shù)情況下linux上的服務(wù)是不須要輸出log到Console,只要輸出到文件
          而windows大部份是只須要輸出到console,不須要輸出到文件
          本地調(diào)試的時(shí)候log4j的級(jí)別多是debug ,而實(shí)際實(shí)施的時(shí)候多是之上的級(jí)別
          造成須要不停的修改log4j的屬性文件,cvs同步的時(shí)候不停的提示
          也許你說可以整個(gè)項(xiàng)目完成再來寫log4j的屬性文件,但有的時(shí)候這個(gè)效果并不好。
          因?yàn)檫€有這種時(shí)候,項(xiàng)目完成(包括log),反復(fù)測(cè)試的這段時(shí)間。

          解決:解決辦法很簡(jiǎn)單,建立一個(gè)log4j的配制文件的目錄,在這個(gè)目錄下為每個(gè)小項(xiàng)目建立一個(gè)目錄,
          每個(gè)目錄下放著自己的log4j配制,然後把這些目錄作為每個(gè)小工程的classpath的第一個(gè),ok上邊的問題就
          解決了。這個(gè)時(shí)候可以寫一個(gè)log4j放在src下,用來開發(fā)時(shí)候調(diào)試用,而真正服務(wù)器上使用的都在各自的文件夾下

          二,為默寫包,某些類定義不同的log4j級(jí)別
          是否想過這中需求呢,一個(gè)項(xiàng)目調(diào)試的時(shí)候,希望其中默寫包不打出log信息。
          比如struts的包,spring的包,還有你引用的別人已經(jīng)開發(fā)好包,或者你自己寫的類,但是你不想看到這個(gè)
          類的log信息.但是你須要調(diào)試當(dāng)前的一些class,log級(jí)別必須設(shè)置在debug級(jí)別
          這個(gè)時(shí)候可以在log4j的屬性文件中加入如下內(nèi)容:
          log4j.logger.包名or類名=高的級(jí)別
          例如:
          log4j.logger.org.springframework=error

          三、注意事項(xiàng)

          1 public   void  execute() {
          2   // ..
          3  logger.debug( " aa " + " bb " + " cc " );
          4 }

          5


          是否這么寫過呢?這樣寫是有些問題的。當(dāng)你把log級(jí)別調(diào)整到info或者更高的時(shí)候,log信息是不輸出了
          但是字符串的拼接一樣進(jìn)行了,使你的程序效率降低,實(shí)驗(yàn)一下

          1 public   void  execute() {
          2   // ..
          3      logger.debug(getStr());
          4 }

          5 public  String getStr() {
          6      System.out.println( " execute getStr " );
          7 }

          8


          調(diào)整log4j屬性文件級(jí)別到info 結(jié)果getStr()照樣執(zhí)行了
          解決辦法:

          1 public   void  execute() {
          2   // .
          3      if (logger.isDebugEnabled()) {
          4         logger.debug(getStr());
          5     }

          6 }

          7

          posted on 2006-11-29 17:33 dreamstone 閱讀(2891) 評(píng)論(1)  編輯  收藏 所屬分類: 利器片段

          評(píng)論

          # re: Log4J的一些小技巧和使用中一些須要注意的問題。 2006-11-29 22:47 joss

          請(qǐng)教一下,把這些目錄作為每個(gè)小工程的classpath的第一個(gè),具體怎么做?  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 黄大仙区| 扶余县| 登封市| 会泽县| 应城市| 青神县| 石林| 乡城县| 茶陵县| 漾濞| 彩票| 正镶白旗| 栖霞市| 东乡县| 花莲市| 郑州市| 乌苏市| 丰原市| 从化市| 泽普县| 莆田市| 浪卡子县| 林西县| 嫩江县| 凤山县| 昌黎县| 拜泉县| 马山县| 仁怀市| 莎车县| 志丹县| 汉阴县| 阿拉善左旗| 南澳县| 孝感市| 遂川县| 乌海市| 林芝县| 济南市| 察哈| 博罗县|