利用log4j將記錄日誌儲存到Mysql資料庫方法及問題
阿新 • • 發佈:2018-12-21
1.首先是要在資料庫中建一張表
CREATE TABLE `log` (
`log_id` int(11) NOT NULL AUTO_INCREMENT,
`project_name` varchar(255) DEFAULT NULL COMMENT '目項名',
`create_date` varchar(255) DEFAULT NULL COMMENT '建立時間',
`level` varchar(255) DEFAULT NULL COMMENT '優先順序',
`category` varchar(255) DEFAULT NULL COMMENT '所在類的全名' ,
`file_name` varchar(255) DEFAULT NULL COMMENT '輸出日誌訊息產生時所在的檔名稱 ',
`thread_name` varchar(255) DEFAULT NULL COMMENT '日誌事件的執行緒名',
`line` varchar(255) DEFAULT NULL COMMENT '號行',
`all_category` varchar(255) DEFAULT NULL COMMENT '日誌事件的發生位置',
`message` varchar(4000) DEFAULT NULL COMMENT '輸出程式碼中指定的訊息' ,
PRIMARY KEY (`log_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
2.設定好後,配置log4j的配置檔案,我這裡用的是properties檔案,輸出的資訊有點多,我也是拿人家的輸出語言(記得改資料庫配置)
#mysql log4j.appender.logDB=org.apache.log4j.jdbc.JDBCAppender log4j.appender.logDB.layout=org.apache.log4j.PatternLayout log4j.appender.logDB.Driver=com.mysql.jdbc.Driver log4j.appender.logDB.URL=jdbc:mysql://localhost:3306/log4j log4j.appender.logDB.User=root log4j.appender.logDB.Password=root log4j.appender.logDB.Sql=INSERT INTO log(project_name,create_date,level,category,file_name,thread_name,line,all_category,message) values('\u6D4B\u8BD5','%d{yyyy-MM-ddHH:mm:ss}','%p','%c','%F','%t','%L','%l','%m') log4j.rootLogger=info,logDB
3.配置完成之後,就可以將資料存到資料庫,但是有時總是遇見一些奇怪的問題,例如這樣:系統提示資料庫驅動找不到,其實並不是這樣,我的驅動確實是存在的。
解決方法:
(如果沒有遇見就算了)將properties配置檔案裡面的每一句話的後面的空格去掉,就OJBK了,記住是行結束的位置的空格