[Logback+slf4j] Mysql DBAppender 正確配置方法 以及錯誤處理,logbackslf4j

來源:互聯網
上載者:User

[Logback+slf4j] Mysql DBAppender 正確配置方法 以及錯誤處理,logbackslf4j

第一必要條件:jar 包

所需要的包:

logback-core-0.9.8.jar

logback-classic-0.9.8.jar

slf4j-api-1.6.8.jar

寫該文時,最新版本為 logback的版本為1.1.2. 對應的Slf4j-api 為 1.7.6 (兩種配方都可以)


第二必要條件:資料庫表建立指令碼。

包括stackoverflow上的很多朋友在內的coder都被官方

http://logback.qos.ch/manual/appenders.html

中提到的getGeneratedKeys 誤導了,都以為,只要是表格裡支援的,就不用自動建立表了,而只需要加上sqlDialect方言。其實不是,不管支援與否都要手動建立表。(當然你可以自己寫一個java bean自動運行指令碼來建立)。

還有看了很多網上的文章,經常出現 sqlDialect 這個配置節點。

我從logback 0.9.8開始測試的,對於Mysql,都不需要配置這個節點,oracle也不需要。

這一步,大家只需要在mysql中運行下面的指令碼:

# Logback: the reliable, generic, fast and flexible logging framework.# Copyright (C) 1999-2010, QOS.ch. All rights reserved.## See http://logback.qos.ch/license.html for the applicable licensing # conditions.# This SQL script creates the required tables by ch.qos.logback.classic.db.DBAppender.## It is intended for MySQL databases. It has been tested on MySQL 5.1.37 # on Linuxuse tumorpredict;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;


第三必要條件:正確的配置。

這裡給出一個用c3p0串連池管理的logback配置:

    <appender name="db-classic-mysql" 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.jdbc.Driver</driverClass>                <jdbcUrl>jdbc:mysql://{$server ip}:3306/{$dbname}</jdbcUrl>                <user>{$user}</user>                <password>{$password}</password>            </dataSource>        </connectionSource>    </appender>


缺一不可。





相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.