posts - 35,  comments - 6,  trackbacks - 0

          Log4j 中階應(yīng)用
          1. 把重要的業(yè)務(wù)日志異步批量寫(xiě)入數(shù)據(jù)庫(kù)
                配置文件示例:

          log4j.logger.business=INFO,db
          log4j.appender.db=org.apache.log4j.jdbc.JDBCAppender
          log4j.appender.db.BufferSize=10
          log4j.appender.db.URL=jdbc:hsqldb:res:/hsqldb/bookstore
          log4j.appender.db.driver=org.hsqldb.jdbcDriver
          log4j.appender.db.user=sa
          log4j.appender.db.password=
          log4j.appender.db.sql=INSERT INTO SS_LOG4J_LOG (PRIORITY,LOGDATE,CLASS,METHOD,MSG) VALUES('%p','%d{yyyy-MM-dd HH:mm:ss}','%C','%M','%m')
          log4j.appender.db.layout=org.apache.log4j.PatternLayout       log4j提供了簡(jiǎn)單靈活且不影響性能的機(jī)制, 將重要業(yè)務(wù)日志寫(xiě)入數(shù)據(jù)庫(kù),方便日后的查詢(xún):

                 1.  建立一個(gè)任意命名的日志記錄表,在log4j.properties里設(shè)置連接參數(shù),根據(jù)剛才建的表名列名,編寫(xiě)插入的語(yǔ)句。

                 2.  BufferSize=10 這樣的參數(shù)可以讓日志異步批量寫(xiě)入,不會(huì)影響系統(tǒng)性能。

                 3.  業(yè)務(wù)日志log最好不要用原來(lái)的package結(jié)構(gòu),而是在項(xiàng)目里協(xié)調(diào)一個(gè)獨(dú)立的名字,如business。

          Log buzzLog = LogFactory.getLog("business");       4. 以上功能的演示代碼在bookstore example 的OrderManager.java,測(cè)試代碼在bookstore example的DBLogTest.java。

          2.Spring 對(duì)log4j的幾個(gè)增強(qiáng)
           個(gè)人建議都不要使用。

           1. 定時(shí)刷新log4j properties文件,無(wú)須重啟服務(wù)器Apply 新的log4j設(shè)置。

              雖然這是個(gè)J2EE Best Practice,但在Spring的JavaDoc里注明了不推薦用于生產(chǎn)環(huán)境,因?yàn)榉?wù)器重啟的時(shí)候,那條watch thread 不會(huì)關(guān)閉。

           2.將log4j.properties 文件放在WEB-INF/log4j.properties。

             這種增強(qiáng)看不出有什么好處,而且如果放WEB-INF,測(cè)試的時(shí)候就不能輸出log4j信息了,除非像Appfuse那樣把WEB-INF也設(shè)為class path,不過(guò)這種設(shè)法只適用于Ant腳本的情況。

          3. 通過(guò)設(shè)定{web.root} 這樣的系統(tǒng)變量,將log文件放到項(xiàng)目的WEB-INF目錄中

          log4j.appender.logfile.File=${bookstore.root}/WEB-INF/logs/bookstore.log這樣做的好處是路徑比較穩(wěn)定,但如果是war式的部署,每次重新部署的時(shí)候就會(huì)把原來(lái)的log文件全部刪掉,遇上jboss 這種不解壓war包的應(yīng)用服務(wù)器就更會(huì)出錯(cuò),所以把log文件放WEB-INF/logs不是一個(gè)好的選擇。

           
               其實(shí)logfile路徑的規(guī)則是,如果不是絕對(duì)路徑,就以應(yīng)用運(yùn)行的目錄作為相對(duì)路徑的根目錄。

               所以我平時(shí)這樣定義,一般就指向tomcat 和很多應(yīng)用服務(wù)器的logs目錄:

          log4j.appender.logfile.File=../logs/bookstore.log這樣的缺點(diǎn)是,假設(shè)你把Tomcat/bin目錄添加到了PATH變量的值中去,并喜歡從Windows開(kāi)始菜單的運(yùn)行框里輸入"startup.bat"啟動(dòng)Tomcat,這時(shí)Log4j的日志就會(huì)被放到C:\Documents And Settings\logs目錄中去。

          3. 忽略某些類(lèi)庫(kù)框架的不必要的信息
                 控制第三方框架類(lèi)庫(kù)的logging level,可以避免滿(mǎn)屏都是不重要的info,把真正重要的信息掩蓋了。

          # Changing the log level to DEBUG when debug
          log4j.logger.org.springframework=WARN
          # Changing the log level to DEBUG will display SQL Hibernate generated
          log4j.logger.org.hibernate=WARN
          log4j.logger.org.hibernate.SQL=ERROR

          posted on 2007-07-25 11:43 NG 閱讀(605) 評(píng)論(1)  編輯  收藏


          FeedBack:
          # re: log4j
          2007-09-28 17:44 | 千里冰封
          JAVA不也自帶了LOG包嗎  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          <2025年8月>
          272829303112
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(1)

          隨筆檔案(35)

          文章分類(lèi)(5)

          文章檔案(2)

          新聞檔案(5)

          java link

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 含山县| 利津县| 绵阳市| 顺平县| 县级市| 马鞍山市| 双辽市| 潍坊市| 湘潭县| 合阳县| 龙井市| 天台县| 慈溪市| 邹城市| 沭阳县| 无极县| 崇明县| 沙湾县| 和田县| 广饶县| 二手房| 中山市| 浦东新区| 两当县| 凤庆县| 盘锦市| 拜城县| 通山县| 紫云| 临沭县| 玉屏| 大连市| 延安市| 车险| 青冈县| 五常市| 辽源市| 莲花县| 屏南县| 东明县| 西丰县|