Log4j2的基本配置我在前面的文章已经介绍,具体可参见:

1     Log4j2记录日志到MySQL

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

创建语句如下:



[sql]  view plain  copy


 

1. DROP TABLE IF EXISTS `ibs_log`;  
2. CREATE TABLE `ibs_log` (  
3. int(10) NOT NULL AUTO_INCREMENT,  
4. NOT NULL COMMENT '日期',  
5. varchar(255) DEFAULT NULL COMMENT '文件名',  
6. varchar(255) DEFAULT NULL COMMENT '行号',  
7. varchar(255) DEFAULT NULL COMMENT '线程',  
8. varchar(255) DEFAULT NULL COMMENT 'Log级别 info warndebug error等',  
9. varchar(2048) DEFAULT NULL COMMENT 'Log信息',  
10. PRIMARY KEY (`log_id`,`log_date`),  
11. KEY`INDEX_LOG_DATE` (`log_date`) USING BTREE  
12. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;



1.2   创建Log4j2.xml配置文件

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



[html]  view plain  copy


 

1. <?xml version="1.0"encoding="UTF-8"?>  
2. <!-- 不打印log4j内部日志,配置文件刷新频率为30秒 -->   
3. <Configuration status="off"monitorInterval="30">  
4. <Appenders>  
5. <JDBC name="databaseAppender" tableName="ibs_log">  
6. <ConnectionFactory class="com.*.*.ConnectionFactory"method="getDatabaseConnection" />  
7. <Column name="log_date" isEventTimestamp="true"/>  
8. <Column name="log_file" pattern="%file" />  
9. <Column name="log_line" pattern="%line" />  
10. <Column name="log_thread" pattern="%thread" />  
11. <Column name="log_level" pattern="%level" />  
12. <Column name="log_message" pattern="%message"/>  
13. </JDBC>  
14. </Appenders>   
15. <Loggers>  
16. <!-- 打印等级:off、fatal、error、warn、info、debug、trace、all -->   
17. <Logger name="项目包名(com.*.*)" level="debug">  
18. <appender-ref ref="databaseAppender"/>  
19. </Logger>   
20. <Root level="off"></Root>  
21. </Loggers>  
22. </Configuration>



1.3   创建数据库连接类ConnectionFactory

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

【ConnectionFactory.Java



[java]  view plain  copy


 

1. package com.centerm.util;  
2.    
3. import java.sql.Connection;  
4. import java.sql.SQLException;  
5. import java.util.Properties;  
6. import javax.sql.DataSource;  
7. importorg.apache.commons.dbcp.DriverManagerConnectionFactory;  
8. importorg.apache.commons.dbcp.PoolableConnection;  
9. import org.apache.commons.dbcp.PoolableConnectionFactory;  
10. importorg.apache.commons.dbcp.PoolingDataSource;  
11. importorg.apache.commons.pool.impl.GenericObjectPool;  
12.    
13. public class ConnectionFactory {  
14. interface Singleton {  
15. final ConnectionFactory INSTANCE = new ConnectionFactory();  
16.     }  
17.    
18. private final DataSource dataSource;  
19.    
20. private ConnectionFactory() {  
21. try {  
22. "com.mysql.jdbc.Driver");  
23. catch (ClassNotFoundException e) {  
24.            e.printStackTrace();  
25. 0);  
26.        }  
27.               
28. new Properties();  
29. "user", "用户名");  
30. "password", "密码"); //or get properties from some configuration file  
31.    
32. new GenericObjectPool<PoolableConnection>();  
33.        DriverManagerConnectionFactory connectionFactory = newDriverManagerConnectionFactory(  
34. "jdbc:mysql://localhost:3306/数据库名称",properties  
35.        );  
36. new PoolableConnectionFactory(  
37. null,"SELECT 1", 3, false, false, Connection.TRANSACTION_READ_COMMITTED  
38.        );  
39.    
40. this.dataSource = new PoolingDataSource(pool);  
41.     }  
42.    
43. public static Connection getDatabaseConnection() throws SQLException {  
44. return Singleton.INSTANCE.dataSource.getConnection();  
45.     }  
46. }



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

1.4   特别注意

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

mysql查看日志ip 查看mysql数据库日志信息_数据库


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学习:

2.1   创建数据库

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

2.2   创建Log4j2.xml配置文件



[html]  view plain  copy


 

 
 
1. <?xml version="1.0"encoding="UTF-8"?>  
2.    
3. <!--不打印log4j内部日志,配置文件刷新频率为30秒 -->   
4. <Configuration status="off"monitorInterval="30">  
5. <Appenders>  
6. <NoSql name="databaseAppender">  
7. <MongoDb databaseName="test"collectionName="logData" server="127.0.0.1"port="27017" userName="root"password="password"/>  
8. </NoSql>  
9. </Appenders>  
10. <Loggers>  
11. <!-- 打印等级:off、fatal、error、warn、info、debug、trace、all -->   
12. <Logger name="com.*.*"level="debug">  
13. <appender-ref ref="databaseAppender"/>  
14. </Logger>   
15. <Root level="off"></Root>  
16. </Loggers>  
17. </Configuration>


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