日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

012_logback中的DBAppender

發布時間:2025/4/17 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 012_logback中的DBAppender 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. DBAppender把記錄事件寫入數據庫的三張表。三張表分別是logging_event、logging_event_property和logging_event_exception。在使用DBAppender之前, 這三張表必須已經被創建。Logback提供創建這些表的SQL腳本, 位于logback-classic/src/main/java/ch/qos/logback/classic/db/script目錄, 對各個流行數據庫分別有一個腳本。如果沒有你想用的數據庫的腳本, 那就按照現有的腳本自己寫吧。

2. 創建表

2.1. logback提供的mysql.sql

2.2. logback提供的創建mysql數據庫表代碼

BEGIN; DROP TABLE IF EXISTS logging_event_property; DROP TABLE IF EXISTS logging_event_exception; DROP TABLE IF EXISTS logging_event; COMMIT;BEGIN; CREATE TABLE logging_event (timestmp BIGINT NOT NULL,formatted_message TEXT NOT NULL,logger_name VARCHAR(254) NOT NULL,level_string VARCHAR(254) NOT NULL,thread_name VARCHAR(254),reference_flag SMALLINT,arg0 VARCHAR(254),arg1 VARCHAR(254),arg2 VARCHAR(254),arg3 VARCHAR(254),caller_filename VARCHAR(254) NOT NULL,caller_class VARCHAR(254) NOT NULL,caller_method VARCHAR(254) NOT NULL,caller_line CHAR(4) NOT NULL,event_id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY); COMMIT;BEGIN; CREATE TABLE logging_event_property(event_id BIGINT NOT NULL,mapped_key VARCHAR(254) NOT NULL,mapped_value TEXT,PRIMARY KEY(event_id, mapped_key),FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); COMMIT;BEGIN; CREATE TABLE logging_event_exception(event_id BIGINT NOT NULL,i SMALLINT NOT NULL,trace_line VARCHAR(254) NOT NULL,PRIMARY KEY(event_id, i),FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); COMMIT;

2.3. 拷貝sql代碼到Navicat編輯器里執行

2.4. 表創建完成

2.5. 表logging_event字段和含義

2.6. 表logging_event_property字段和含義, 用于存儲包含在MDC或上下文里的鍵和值

2.7. 表logging_event_exception字段和含義

3. ConnectionSource接口和派生類

3.1. logback的ConnectionSource接口提供了一種可插拔地、透明地獲取JDBC連接的方法。現在有三種具體實現: DataSourceConnectionSource、DriverManagerConnectionSource和JNDIConnectionSource。

3.2. ConnectionSource接口

3.3. DriverManagerConnectionSource是ConnectionSource的一個實現, 以傳統的JDBC方式從連接URL里取得連接。

3.4. 注意DriverManagerConnectionSource會在每次調用getConnection()方法時建立一個新連接。

3.5. DriverManagerConnectionSource配置

<appender name="db" class="ch.qos.logback.classic.db.DBAppender"><connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource"> <driverClass>com.mysql.cj.jdbc.Driver</driverClass> <url>jdbc:mysql://192.168.25.138:3306/studyjdbc?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai</url> <user>root</user> <password>lyw123456</password> </connectionSource> </appender>

4. 連接池

4.1. 記錄事件有時創建得很快。為了來得及插入數據庫, 推薦為DBAppender使用連接池。

4.2. 使用DataSourceConnectionSource可以配置連接池, 推薦使用c3p0。

4.3. 新建一個名為DBAppender的Java項目, 同時添加相關jar包

4.4. 在src目錄下編輯loback.xml

<configuration debug="true"><appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><appender name="db" class="ch.qos.logback.classic.db.DBAppender"><connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource"> <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource"> <driverClass>com.mysql.cj.jdbc.Driver</driverClass> <jdbcUrl>jdbc:mysql://192.168.25.138:3306/studyjdbc?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf-8&amp;serverTimezone=Asia/Shanghai</jdbcUrl> <user>root</user> <password>lyw123456</password></dataSource> </connectionSource></appender><root level="debug"><appender-ref ref="db" /><appender-ref ref="stdout" /></root></configuration>

4.5. 編輯MyDb.java

package com.zr.mail;import org.slf4j.Logger; import org.slf4j.LoggerFactory;public class MyDb {private static final Logger logger = LoggerFactory.getLogger(MyDb.class);public static void main(String[] args) {logger.trace("向數據庫寫入一個跟蹤信息");logger.debug("向數據庫寫入一個測試信息");logger.info("向數據庫寫入一個日志信息");logger.warn("向數據庫寫入一個警告信息");logger.error("向數據庫寫入一個錯誤信息");} }

4.6. 運行項目

4.7. 插入數據庫數據

總結

以上是生活随笔為你收集整理的012_logback中的DBAppender的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。