Log4j2记录日志到数据库(MySQL&MongoDB)

【摘要】

    本文主要介绍Log4j2记录日志到MySQL和MongoDB数据库,用简单的例子来讲解,并解决了一些官方配置可能出现的错误。具体内容可参见官方文档:http://logging.apache.org/log4j/2.x/manual/appenders.html左侧导航栏的Appenders->JDBC和Appenders->NoSQL两项

【引用】

    Log4j2的基本配置我在前面的文章已经介绍,具体可参见:http://blog.csdn.net/ererfei/article/details/46831807

1.    Log4j2记录日志到MySQL

1.1.   首先创建存储日志的数据表ibs_log

创建语句如下:

DROP TABLE IF EXISTS `ibs_log`;
CREATE TABLE `ibs_log` (
 `log_id` int(10) NOT NULL AUTO_INCREMENT,
 `log_date` datetime NOT NULL COMMENT '日期',
 `log_file` varchar(255) DEFAULT NULL COMMENT '文件名',
 `log_line` varchar(255) DEFAULT NULL COMMENT '行号',
  `log_thread`varchar(255) DEFAULT NULL COMMENT '线程',
 `log_level` varchar(255) DEFAULT NULL COMMENT 'Log级别 info warndebug error等',
 `log_message` varchar(2048) DEFAULT NULL COMMENT 'Log信息',
 PRIMARY KEY (`log_id`,`log_date`),
  KEY`INDEX_LOG_DATE` (`log_date`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

1.2.   创建Log4j2.xml配置文件

需要创建数据表、数据行的对应关系


 

 
         
     
     
     
     
     
     
     
         
  
 
    
   
     
    
   
 

1.3.   创建数据库连接类ConnectionFactory

需要修改下面代码中用户名、密码、数据库名称为你使用的数据库对用的用户名密码以及名称:

【ConnectionFactory.java】

package com.centerm.util;
 
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
import javax.sql.DataSource;
importorg.apache.commons.dbcp.DriverManagerConnectionFactory;
importorg.apache.commons.dbcp.PoolableConnection;
import org.apache.commons.dbcp.PoolableConnectionFactory;
importorg.apache.commons.dbcp.PoolingDataSource;
importorg.apache.commons.pool.impl.GenericObjectPool;
 
public class ConnectionFactory {
         privatestatic interface Singleton {
       final ConnectionFactory INSTANCE = new ConnectionFactory();
    }
 
   private final DataSource dataSource;
 
   private ConnectionFactory() {
             try {
           Class.forName("com.mysql.jdbc.Driver");
       } catch (ClassNotFoundException e) {
           e.printStackTrace();
           System.exit(0);
       }
            
       Properties properties = new Properties();
       properties.setProperty("user", "用户名");
       properties.setProperty("password", "密码"); //or get properties from some configuration file
 
       GenericObjectPoolpool = new GenericObjectPool();
       DriverManagerConnectionFactory connectionFactory = newDriverManagerConnectionFactory(
                "jdbc:mysql://localhost:3306/数据库名称",properties
       );
       new PoolableConnectionFactory(
                connectionFactory, pool, null,"SELECT 1", 3, false, false, Connection.TRANSACTION_READ_COMMITTED
       );
 
       this.dataSource = new PoolingDataSource(pool);
    }
 
   public static Connection getDatabaseConnection() throws SQLException {
       return Singleton.INSTANCE.dataSource.getConnection();
    }
}

至此就可以运行项目测试了


1.4.   特别注意

由于项目启动时Log4j2是最先加载的内容,所以有可能出现ConnectionFactory这个类启动报错,所以需要在官网提供实例的基础上添加代码(上面类中已经添加):


2.    Log4j2记录日志到MongoDB

安装运行MongoDB:http://www.runoob.com/mongodb/mongodb-window-install.html

MongoDB驱动下载:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

Java MongoDB API学习:http://blog.csdn.net/ererfei/article/details/50857103

2.1.   创建数据库

运行MongoDB客户端mongo-cli.exe,使用命令”usetest”创建数据库test,创建该数据库的用户[root:password],不需要手动创建collection。

2.2.   创建Log4j2.xml配置文件


 
 

  
    
      
    
  
  
     
    
      
     
    
  

!!!至此就可以运行项目测试了

 

你可能感兴趣的:(Log4j2,MongoDB,MYSQL)