2013-05-16 117 views
0

我有興趣在我的項目中使用slf4j-logback,並且想使用DBAppenderLogback DBAppender DDL?

顯然,除非你實現你自己的DBNameResolver,你必須通過上面的鏈接描述的特定表標準/架構遵守。具體而言,您需要3個具有非常特定列的表格。

雖然該網頁上的信息是相當冗長,它不包含任何「表元」(鍵,索引,默認值等),如果我們留在添加這些我不知道我們的自己的判斷力或者是否需要用特定的值來定義。

我試圖尋找創建這些表的一個DDL或SQL腳本,但找不到任何。這樣的腳本是否存在?其他SOers如何處理創建這些DBAppender表?提前致謝!

編輯:我發現this article on Grails討論DBAppender

您必須創建自己的數據庫表。有三個表格,並且Logback發行版針對若干流行的數據庫附帶示例DDL

我下載了最新版本(1.0.13)分佈和搜查高和低.ddl和.sql文件,發現東西活象是我一直在尋找,位於:

的logback-1.0.13 /的logback訪問/ SRC /主/ JAVA/CH/QOS /的logback /訪問/分貝/腳本/ mysql.sql

# 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.access.db.DBAppender. 
# 
# It is intended for MySQL databases. It has been tested on MySQL 5.0.22 with 
# INNODB tables. 


BEGIN; 
DROP TABLE IF EXISTS access_event_header; 
DROP TABLE IF EXISTS access_event; 
COMMIT; 

BEGIN; 
CREATE TABLE ACCESS_EVENT 
(
    timestmp   BIGINT NOT NULL, 
    requestURI  VARCHAR(254), 
    requestURL  VARCHAR(254), 
    remoteHost  VARCHAR(254), 
    remoteUser  VARCHAR(254), 
    remoteAddr  VARCHAR(254), 
    protocol   VARCHAR(254), 
    method   VARCHAR(254), 
    serverName  VARCHAR(254), 
    postContent  VARCHAR(254), 
    event_id   BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY 
); 
COMMIT; 

BEGIN; 
CREATE TABLE access_event_header 
(
    event_id   BIGINT NOT NULL, 
    header_key  VARCHAR(254) NOT NULL, 
    header_value  VARCHAR(1024), 
    PRIMARY KEY(event_id, header_key), 
    FOREIGN KEY (event_id) REFERENCES access_event(event_id) 
); 
COMMIT; 

然而,這些表(access_eventaccess_event_header)是而不是與文獻引用的相同的3個表(logging_event,logging_event_propertylogging_event_exception)。所以我仍然在這裏損失...

回答

-1

我看了看源代碼1.0.13的DBAppender。的Javadoc,DBAppender類的狀態:

的DBAppender插入訪問事件成獨立的Java編程語言的格式三個數據庫表。

但是當你向下挖掘到代碼中的日誌消息實際上只是被追加到access_event_headeraccess_event,不喜歡的Javadoc 3代表說。

所以,結論是:

的的logback的Javadoc和開發文檔是不是最新的與最新版本,並不能反映該DBAppender需要真正的表結構。

+0

請參閱elton的回答,這是正確的。您應該刪除您錯誤地接受爲正確答案的答案。 – Ceki

2

您正在搜索錯誤的logback模塊! logback-classic是您正在討論的模塊。 您需要的腳本可以在logback-classic\src\main\java\ch\qos\logback\classic\db\<db>.sql下找到。

例如。 mysql.sql:

# 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 Linux 


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;