Jhonney的專欄

             ----人見人愛
          隨筆 - 49, 文章 - 1, 評論 - 23, 引用 - 0
          數(shù)據(jù)加載中……

          關(guān)于log4j重復(fù)輸出的問題

          ???今天接著昨天的工作干,把自己寫的框架和程序結(jié)合,具體測試一下框架。代碼全部跑通后,一個師妹問了一個關(guān)于JDBC的問題,由于以前開發(fā)多數(shù)底層要么用的工具,要么別人已經(jīng)封裝好了,所以對這個問題弄了半天,關(guān)于ResultSet中sql用select a.*,b* from..的問題,問題是程序老是報(bào)超出邊界的錯誤,結(jié)論是像前面的sql語句java只認(rèn)為只有2列,解決辦法需要寫清各個列。
          ???由于這件事的問題,我感到項(xiàng)目中他們數(shù)據(jù)庫底層沒有統(tǒng)一,且沒有調(diào)試工具,我寫的框架其實(shí)很早就寫好了,但一直沒有給他們講,所以今天想寫個關(guān)于框架使用的ppt,
          ?? 這時就碰到了Log4j重復(fù)輸出的問題,摸索一會兒,感覺應(yīng)該出在log4j的logger繼承上,但一直找不到原因,后來偶爾翻到刑紅瑞的blog,才知道錯誤,錯誤解決辦法:
          【quto to 賈斯汀的網(wǎng)志
          log4j重復(fù)輸出log信息原因和解決辦法
          ???????????????????????????????????????
          log4j的logger(舊版本稱logger)是層次結(jié)構(gòu)的,子logger會繼承父logger的屬性,appender也是可繼承的屬性,這常常容易導(dǎo)致配置錯誤而引起的log4j輸出重復(fù)的log信息
          log4j的logger(舊版本稱logger)是層次結(jié)構(gòu)的,子logger會繼承父logger的屬性,appender也是可繼承的屬性,這常常容易導(dǎo)致配置錯誤而引起的log4j輸出重復(fù)的log信息。如果在在父子logger中引用了相同的appender時,例子:
          ????
          <logger?name="com.erry.model">
          ????????
          <level?value="DEBUG"/>
          ????????
          <appender-ref?ref="CONSOLE"/>
          ????
          </logger>
          ????
          <logger?name="com.erry.service">
          ????????
          <level?value="DEBUG"/>
          ????????
          <appender-ref?ref="CONSOLE"/>
          ????
          </logger>
          ????
          <root>
          ????????
          <level?value="WARN"/>
          ????????
          <appender-ref?ref="CONSOLE"/>
          ????
          </root>

          由于子logger(com.erry.model和com.erry.service)繼承了父logger(ROOT)的appender,加上其本身引用的appender總共會在2個appender上輸出消息,由于這兩個appender實(shí)際上是同一個appender,所以結(jié)果會是相同的消息被重復(fù)輸出。解決這個問題很簡單,只要注意不要重復(fù)引用父logger已經(jīng)引用的appender即可。上述例子的正確配置如下:
          ????
          <logger?name="com.erry.model">
          ????????
          <level?value="DEBUG"/>
          ????
          </logger>
          ????
          <logger?name="com.erry.service">
          ????????
          <level?value="DEBUG"/>
          ????
          </logger>
          ????
          <root>
          ????????
          <level?value="WARN"/>
          ????????
          <appender-ref?ref="CONSOLE"/>
          ????
          </root>



          posted on 2007-03-23 18:14 Jhonney 閱讀(2288) 評論(1)  編輯  收藏

          評論

          # re: 關(guān)于log4j重復(fù)輸出的問題  回復(fù)  更多評論   

          感謝分享~~
          2011-07-27 16:53 | herry

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 阜康市| 谷城县| 牙克石市| 万盛区| 固原市| 金沙县| 镇宁| 嵊州市| 金乡县| 浮山县| 鄂托克旗| 青阳县| 扬州市| 平和县| 奉化市| 衡水市| 德令哈市| 宽甸| 融水| 晴隆县| 丰都县| 肇州县| 维西| 华蓥市| 伊川县| 呼和浩特市| 乐安县| 镇坪县| 太和县| 台中县| 沂源县| 绿春县| 合肥市| 新龙县| 西吉县| 本溪| 沈阳市| 清新县| 年辖:市辖区| 容城县| 图片|