把重要的業務日誌非同步批量寫入資料庫 LOG4J__資料庫

來源:互聯網
上載者:User
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
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.