使用log4j把日志寫到mysql數據庫


log4j可以支持將log輸出到文件,數據庫,甚至遠程服務器,本教程以mysql數據庫為例來講解:

 

作者:Jesai

沒有傘的孩子,只能光腳奔跑!

1.數據庫設計

數據庫表

4-1日志表(log)

字段名

字段解釋

數據類型

數據

長度

是否為空

是否為主鍵

是否為外鍵

id

日志編號

bigint

20

create_time

創建時間

datetime

 

logs

日志內容

varchar

200

 

 

數據庫創建:

Create database log;

 

 

切換數據庫:

Use log;

創建表:

CREATE TABLE `log` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `create_time` datetime NOT NULL,
 `logs` varchar(200) NOT NULL,
 primary key(`id`)
 )
 ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

2.項目准備

新建一個java項目 log4j_write_mysql

File->new ->java Project:

新建一個測試類Test:

 

新建一個lib文件,導入log4j的包:

 

 

配置log4j配置文件

 

log4j.rootLogger=ERROR,appender1,appender2

log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n

log4j.appender.appender2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender2.driver=com.mysql.jdbc.Driver
log4j.appender.appender2.URL=jdbc:mysql://localhost:3306/log?useUnicode=true&characterEncoding=UTF-8
log4j.appender.appender2.user=root
log4j.appender.appender2.password=137151
log4j.appender.appender2.sql=insert into zuidaima_log (create_time,log) VALUES ('%d{yyyy-MM-dd hh:mm:ss}', '%c %p %m %n')
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout

 

測試類編碼:

/**
 * 
 */
package log4j_write_mysql;

import org.apache.log4j.Logger;



/**  
 *   
 * 項目名稱:log4j_write_mysql  
 * 類名稱:Test  
 * 類描述:  
 * 創建人:鄧家海  
 * 創建時間:2015年5月28日 上午1:03:01  
 * 修改人:deng  
 * 修改時間:2015年5月28日 上午1:03:01  
 * 修改備注:  
 * @version   
 *   
 */

public class Test {
        public static Logger log = Logger.getLogger(Test.class);

        public static void main(String[] args) {
            try {
                throw new Exception("最代碼錯誤log");
            } catch (Exception e) {
                log.error(e.getMessage());
            }
        }
    
}

3:運行結果:

控制台信息:

數據庫信息:

改進,整合控制台、日志文件、數據庫三個輸出:

配置文件代碼:

log4j.rootLogger=ERROR,appender1,appender2,log2

log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender1.Target=System.err
log4j.appender.appender1.layout=org.apache.log4j.PatternLayout
log4j.appender.appender1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n

log4j.appender.appender2=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.appender2.driver=com.mysql.jdbc.Driver
log4j.appender.appender2.URL=jdbc:mysql://localhost:3306/log?useUnicode=true&characterEncoding=UTF-8
log4j.appender.appender2.user=root
log4j.appender.appender2.password=137151
log4j.appender.appender2.sql=insert into log (create_time,logs) VALUES ('%d{yyyy-MM-dd hh:mm:ss}', '%c %p %m %n')
log4j.appender.appender2.layout=org.apache.log4j.PatternLayout

log4j.appender.log2=org.apache.log4j.FileAppender
log4j.appender.log2.file=log.log
log4j.appender.log2.layout=org.apache.log4j.PatternLayout
log4j.appender.log2.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss:SSS}[%p]: %m%n

如需要源代碼,請發帖索要:

http://tieba.baidu.com/f?kw=%C8%ED%BC%FE%C6%B5%B5%C0&fr=home

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM