系統必須是使用LOG4J進行日誌管理,否則方法無效。
系統必須包含commons-logging-xxx.jar,log4j-xxx.jar這兩個JAR包,XXX為版本號。
二、操作步驟
1、創建日誌表
要把日誌持久化,必須在數據庫中創建壹張用來存儲日誌信息的表,表內字段為日誌
的壹個主要屬性包括:操作類,執行方法,打印時間,日誌級別,日誌內容。
CREATE TABLE RESLOG (LOGID VARCHAR2(20) NOT NULL,
CLASS VARCHAR2(200),
METHOD VARCHAR2(100),
CREATETIME DATE,
LOGLEVEL VARCHAR2(50),
MSG VARCHAR2(4000))
因為存儲的類為類的全部路徑,所以CLASS字段長度需要比較大。
2、日誌管理配置
LOG4J主要有兩種配置文件.properties和.xml,這裏以properties文件為基礎來講
述,關於XML文件的配置,相信大家看完下面的介紹也壹樣能輕松完成。
通常在LOG4J.PROPERTIES文件的第壹行是:
log4j.rootLogger= XXX,這句是控制日誌的輸出,如果想吧日誌輸出到數據庫,
則需要在XXX中添加逗DB地,如log4j.rootLogger=INFO,stdout,Platform,db。上面
這句就是把日誌中級別為INFO的信息輸出到STDOUT,PLATFORM和DB
(DATABASE)中。
配置好如上的信息,LOG4J就知道用戶是想把信息存入數據庫,接下來我們就要來
配置數據庫的相關信息(包括緩存,數據庫連接信息,和執行SQL),配置信息如下:
###JDBCAppender
log4j.appender.db = org.apache.log4j.jdbc.JDBCAppender
//這個配置是選擇使用JDBCAppender方法,將日誌信息存儲到數據庫。當然,如果妳還要做其他操作,可以自己寫個類,繼承JDBCAppender就OK了。
log4j.appender.db.BufferSize=1
//這個配置是告訴LOG4J,有多少條日誌信息後才存入數據庫,我這裏是1,就是說有壹條就查壹條,顯然這樣在生產環境下是很影響系統性能的。
log4j.appender.db.driver=oracle.jdbc.driver.OracleDriver
//這個配置是告訴LOG4J,做數據庫存儲所用的驅動。
log4j.appender.db.URL=jdbc:oracle:thin:@<ip>:<port>:<sid>
//這個配置數據庫連接的URL,不用說也都知道。
log4j.appender.db.user=XXX
log4j.appender.db.password=XXX
//上面兩個是數據庫連接時的用戶名和密碼
log4j.appender.db.sql=insert into RESLOG
(LogId,Class,Method,createTime,LogLevel,MSG)
values (SQ_RESLOG_LOGID.Nextval,'%C','%M',
to_date('%d{-MM-dd HH:mm:ss}','-MM-dd
HH24:mi:ss'),'%p','%m')
//這個配置是告訴當LOG4J吧日誌存儲數據庫時用的SQL語句。SQ_RESLOG_LOGID.Nextval是我建的壹個SEQUENCE;‘%C’是日誌中的CLASS;‘%M’是打印日誌是執行到類裏的方法;‘%d’是打印的時間,它支持格式化;‘%P’是日誌級別,包括INFO、DEBUG、ERROR等;‘%m’是MSG,日誌內容。註意這裏的參數區分大小寫。
log4j.appender.db.layout=org.apache.log4j.PatternLayout
通過上面的配置,現在再啟動服務,LOG4J就會自動把原來存儲在.LOG文件中的信息,同時存儲到數據庫了。