国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

Log4j2記錄日志到數(shù)據(jù)庫(MySQL&MongoDB)

2019-11-11 03:33:50
字體:
供稿:網(wǎng)友
   【摘要】

    本文主要介紹Log4j2記錄日志到MySQL和MongoDB數(shù)據(jù)庫,用簡單的例子來講解,并解決了一些官方配置可能出現(xiàn)的錯誤。具體內(nèi)容可參見官方文檔:http://logging.apache.org/log4j/2.x/manual/appenders.html左側(cè)導(dǎo)航欄的Appenders->JDBC和Appenders->NoSQL兩項

   【引用】

    Log4j2的基本配置我在前面的文章已經(jīng)介紹,具體可參見:http://blog.csdn.net/ererfei/article/details/46831807

1     Log4j2記錄日志到MySQL

1.1  首先創(chuàng)建存儲日志的數(shù)據(jù)表ibs_log

創(chuàng)建語句如下:

[sql] view plain copy 在CODE上查看代碼片派生到我的代碼片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信息',   

1.2   創(chuàng)建Log4j2.xml配置文件

需要創(chuàng)建數(shù)據(jù)表、數(shù)據(jù)行的對應(yīng)關(guān)系

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片<?xml version="1.0"encoding="UTF-8"?>  <!-- 不打印log4j內(nèi)部日志,配置文件刷新頻率為30秒 -->   <Configuration status="off"monitorInterval="30">   <Appenders>           <JDBC name="databaseAppender" tableName="ibs_log">       <ConnectionFactory class="com.*.*.ConnectionFactory"method="getDatabaseConnection" />       <Column name="log_date" isEventTimestamp="true"/>       <Column name="log_file" pattern="%file" />       <Column name="log_line" pattern="%line" />       <Column name="log_thread" pattern="%thread" />       <Column name="log_level" pattern="%level" />       <Column name="log_message" pattern="%message"/>           </JDBC>   </Appenders>    <Loggers>     <!-- 打印等級:off、fatal、error、warn、info、debug、trace、all -->      <Logger name="項目包名(com.*.*)" level="debug">       <appender-ref ref="databaseAppender"/>     </Logger>      <Root level="off"></Root>   </Loggers>  </Configuration>  

1.3   創(chuàng)建數(shù)據(jù)庫連接類ConnectionFactory

需要修改下面代碼中用戶名、密碼、數(shù)據(jù)庫名稱為你使用的數(shù)據(jù)庫對用的用戶名密碼以及名稱:

【ConnectionFactory.java

[java] view plain copy 在CODE上查看代碼片派生到我的代碼片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            GenericObjectPool<PoolableConnection>pool = new GenericObjectPool<PoolableConnection>();         DriverManagerConnectionFactory connectionFactory = newDriverManagerConnectionFactory(                  "jdbc:mysql://localhost:3306/數(shù)據(jù)庫名稱",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是最先加載的內(nèi)容,所以有可能出現(xiàn)ConnectionFactory這個類啟動報錯,所以需要在官網(wǎng)提供實例的基礎(chǔ)上添加代碼(上面類中已經(jīng)添加):

2    Log4j2記錄日志到MongoDB

安裝運行MongoDB:http://www.runoob.com/mongodb/mongodb-window-install.html

MongoDB驅(qū)動下載:http://central.maven.org/maven2/org/mongodb/mongo-java-driver/

Java MongoDB API學(xué)習(xí):http://blog.csdn.net/ererfei/article/details/50857103

2.1   創(chuàng)建數(shù)據(jù)庫

運行MongoDB客戶端mongo-cli.exe,使用命令”usetest”創(chuàng)建數(shù)據(jù)庫test,創(chuàng)建該數(shù)據(jù)庫的用戶[root:password],不需要手動創(chuàng)建collection。

2.2   創(chuàng)建Log4j2.xml配置文件

[html] view plain copy 在CODE上查看代碼片派生到我的代碼片<?xml version="1.0"encoding="UTF-8"?>     <!--不打印log4j內(nèi)部日志,配置文件刷新頻率為30秒 -->   <Configuration status="off"monitorInterval="30">    <Appenders>      <NoSql name="databaseAppender">        <MongoDb databaseName="test"collectionName="logData" server="127.0.0.1"port="27017" userName="root"password="password"/>      </NoSql>    </Appenders>    <Loggers>      <!-- 打印等級:off、fatal、error、warn、info、debug、trace、all -->       <Logger name="com.*.*"level="debug">        <appender-ref ref="databaseAppender"/>      </Logger>       <Root level="off"></Root>    </Loggers>  </Configuration>  

至此就可以運行項目測試了


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久治县| 丹棱县| 麟游县| 鹰潭市| 神农架林区| 泉州市| 稷山县| 嘉黎县| 台南市| 北川| 通辽市| 镇赉县| 永城市| 双鸭山市| 涟水县| 三穗县| 郑州市| 兴城市| 方山县| 绥德县| 甘孜县| 佛学| 岳阳县| 乌鲁木齐县| 盐池县| 唐海县| 尤溪县| 巴东县| 洪泽县| 江山市| 交城县| 广安市| 金寨县| 南昌县| 瓮安县| 龙江县| 班玛县| 东平县| 武功县| 宁德市| 慈利县|