posts - 35,  comments - 6,  trackbacks - 0

          Log4j 中階應用
          1. 把重要的業務日志異步批量寫入數據庫
                配置文件示例:

          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提供了簡單靈活且不影響性能的機制, 將重要業務日志寫入數據庫,方便日后的查詢:

                 1.  建立一個任意命名的日志記錄表,在log4j.properties里設置連接參數,根據剛才建的表名列名,編寫插入的語句。

                 2.  BufferSize=10 這樣的參數可以讓日志異步批量寫入,不會影響系統性能。

                 3.  業務日志log最好不要用原來的package結構,而是在項目里協調一個獨立的名字,如business。

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

          2.Spring 對log4j的幾個增強
           個人建議都不要使用。

           1. 定時刷新log4j properties文件,無須重啟服務器Apply 新的log4j設置。

              雖然這是個J2EE Best Practice,但在Spring的JavaDoc里注明了不推薦用于生產環境,因為服務器重啟的時候,那條watch thread 不會關閉。

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

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

          3. 通過設定{web.root} 這樣的系統變量,將log文件放到項目的WEB-INF目錄中

          log4j.appender.logfile.File=${bookstore.root}/WEB-INF/logs/bookstore.log這樣做的好處是路徑比較穩定,但如果是war式的部署,每次重新部署的時候就會把原來的log文件全部刪掉,遇上jboss 這種不解壓war包的應用服務器就更會出錯,所以把log文件放WEB-INF/logs不是一個好的選擇。

           
               其實logfile路徑的規則是,如果不是絕對路徑,就以應用運行的目錄作為相對路徑的根目錄。

               所以我平時這樣定義,一般就指向tomcat 和很多應用服務器的logs目錄:

          log4j.appender.logfile.File=../logs/bookstore.log這樣的缺點是,假設你把Tomcat/bin目錄添加到了PATH變量的值中去,并喜歡從Windows開始菜單的運行框里輸入"startup.bat"啟動Tomcat,這時Log4j的日志就會被放到C:\Documents And Settings\logs目錄中去。

          3. 忽略某些類庫框架的不必要的信息
                 控制第三方框架類庫的logging level,可以避免滿屏都是不重要的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 閱讀(603) 評論(1)  編輯  收藏


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

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


          網站導航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆檔案(35)

          文章分類(5)

          文章檔案(2)

          新聞檔案(5)

          java link

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 科技| 渝北区| 兴山县| 阜康市| 当阳市| 分宜县| 南涧| 长春市| 宜宾市| 盐池县| 新干县| 高安市| 厦门市| 应城市| 当雄县| 清涧县| 渝中区| 大竹县| 南江县| 民县| 饶平县| 辽阳市| 新竹市| 通江县| 友谊县| 新闻| 咸丰县| 武安市| 枣庄市| 拉萨市| 谷城县| 湟源县| 富锦市| 安溪县| 新兴县| 桑植县| 静宁县| 社会| 乌兰浩特市| 兴隆县| 环江|