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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

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

2019-11-11 02:24:30
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
   【摘要】

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

   【引用】

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

1     Log4j2記錄日志到MySQL

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

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

[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 '行號(hào)',    `log_thread`varchar(255) DEFAULT NULL COMMENT '線程',   `log_level` varchar(255) DEFAULT NULL COMMENT 'Log級(jí)別 info warndebug error等',   `log_message` varchar(2048) DEFAULT NULL COMMENT 'Log信息',   

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

需要?jiǎng)?chuàng)建數(shù)據(jù)表、數(shù)據(jù)行的對(duì)應(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>     <!-- 打印等級(jí):off、fatal、error、warn、info、debug、trace、all -->      <Logger name="項(xiàng)目包名(com.*.*)" level="debug">       <appender-ref ref="databaseAppender"/>     </Logger>      <Root level="off"></Root>   </Loggers>  </Configuration>  

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

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

【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ù)庫(kù)名稱",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();      }  }  

至此就可以運(yùn)行項(xiàng)目測(cè)試了

1.4   特別注意

由于項(xiàng)目啟動(dòng)時(shí)Log4j2是最先加載的內(nèi)容,所以有可能出現(xiàn)ConnectionFactory這個(gè)類啟動(dòng)報(bào)錯(cuò),所以需要在官網(wǎng)提供實(shí)例的基礎(chǔ)上添加代碼(上面類中已經(jīng)添加):

2    Log4j2記錄日志到MongoDB

安裝運(yùn)行MongoDB:http://www.runoob.com/mongodb/mongodb-window-install.html

MongoDB驅(qū)動(dòng)下載: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ù)庫(kù)

運(yùn)行MongoDB客戶端mongo-cli.exe,使用命令”usetest”創(chuàng)建數(shù)據(jù)庫(kù)test,創(chuàng)建該數(shù)據(jù)庫(kù)的用戶[root:password],不需要手動(dòng)創(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>      <!-- 打印等級(jí):off、fatal、error、warn、info、debug、trace、all -->       <Logger name="com.*.*"level="debug">        <appender-ref ref="databaseAppender"/>      </Logger>       <Root level="off"></Root>    </Loggers>  </Configuration>  

至此就可以運(yùn)行項(xiàng)目測(cè)試了


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 昌宁县| 阳原县| 伽师县| 宝兴县| 洪洞县| 望谟县| 新源县| 平阳县| 边坝县| 大化| 定安县| 大方县| 高陵县| 林西县| 于都县| 凤山市| 青冈县| 亳州市| 广南县| 萨迦县| 海南省| 剑川县| 惠东县| 巩义市| 星子县| 永泰县| 简阳市| 克什克腾旗| 麻阳| 京山县| 尼木县| 尼勒克县| 政和县| 辰溪县| 和平县| 闽侯县| 连山| 昌乐县| 城固县| 巴彦县| 石林|