咱們知道將數據庫輸出到不一樣的地方須要使用不一樣的appender表示,那下面瞭解一下輸出到數據庫的DBAppender。java
因爲DBAppender會把記錄寫到數據庫中,所以咱們必須知道數據庫的表結構。這個結構是固定的,可是能夠經過繼承DBAppenderBase類來實現修改表的結構,詳細作法參考https://blog.csdn.net/qq_20914913/article/details/92830914#%E4%B8%80%E3%80%81%E5%8E%9F%E5%A7%8Blogback%20%C2%A0MySQL%E9%85%8D%E7%BD%AEsql
DBAppender會把記錄事件寫入數據庫的三張表(logging_event、logging_event_property、logging_event_exception),而且這三張表的結構是固定的。建立這三張表的腳本以下:數據庫
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;
ConnectionSource有3種類型實現:DataSourceConnectionSource、DriverManagerConnectionSource 和 JNDIConnectionSource。apache
DriverManagerConnectionSource類型是直接使用DriverManager經過jdbc驅動鏈接數據庫的,而不是使用數據源DataSource得到數據庫鏈接。app
xml文件配置:maven
注意:使用DriverManager得到數據庫鏈接的方式的配置格式是相同的,所以不須要改動格式。標準的格式如上圖所示。之後使用直接copy就能夠了。ui
該方式是從javax.sql.DataSource取得鏈接的。因爲DataSource有不少種類型的實現,所以不一樣的實現類中具備相同功能的屬性的屬性名可能不盡相同,所以可能形成<dataSource>標籤的子標籤名不盡相同。spa
xml文件配置:.net
因爲DataSource有不一樣的實現,好比Druid、c3p0、dbcp數據源等。每一種數據源對用戶名與密碼驅動等屬性的命名可能不一致,所以致使配置文件的標籤有可能不同。下面列舉一下Druid與c3p0類型數據源的appenderde的配置。3d
須要導入druid-1.0.29.jar文件,jar下載地址:http://repo1.maven.org/maven2/com/alibaba/druid/
須要導入c3p0-0.9.1.2.jar文件,jar下載地址:http://sourceforge.net/projects/c3p0/
須要導入Commons-dbcp-1.x.jar與Commons-pool-1.x.jar兩個jar文件,下載網址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
總結:
經過配置Druid類型數據源的DBAppender與c3p0類型數據源的DBAppender以及dbcp類型數據源的DBAppender能夠發現他們有如下區別:存儲用戶名、驅動、資源定位符使用的標籤是不一樣的。
下面瞭解一下鏈接池的配置