首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >登录DBAppender DDL?

登录DBAppender DDL?
EN

Stack Overflow用户
提问于 2013-05-16 10:23:21
回答 2查看 3.5K关注 0票数 0

我对在我的项目中使用slf4j-logback感兴趣,并且希望使用DBAppender

显然,除非您实现自己的DBNameResolver,否则必须遵守上面链接中概述的特定表条件/模式。具体来说,您需要3个具有非常特定列的表。

尽管该页面上的信息相当冗长,但它不包含任何“表元数据”(键、索引、默认值等)。我想知道我们是否需要自己斟酌来添加这些值,或者它们是否需要用特定的值来定义。

我试图寻找一个DDL或SQL脚本来创建这些表,但是找不到。有这样的剧本吗?其他SOers如何处理这些DBAppender表的创建?提前感谢!

编辑:我发现这篇关于Grails的文章在讨论DBAppender

您必须自己创建数据库表。有三个表,Logback发行版附带了几个流行数据库的示例DDL

我下载了最新的(1.0.13)发行版,并在它上下搜索.ddl和.sql文件,发现了一些与我正在寻找的类似的东西,位于:

logback-1.0.13/logback-access/src/main/java/ch/qos/logback/access/db/script/mysql.sql

代码语言:javascript
复制
# 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_eventlogging_event_propertylogging_event_exception)。所以我还是很困惑.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-16 11:19:42

我查看了1.0.13的DBAppender的源代码。DBAppender类状态的Javadocs:

DBAppender以独立于Java编程语言的格式将访问事件插入到三个数据库表中。

然而,当您深入研究代码时,日志消息实际上只是附加到access_event_headeraccess_event中,而不是像Javadocs那样的3个表。

因此,结论是:

logback Javadocs和开发人员文档与最新版本不同步,也没有反映出DBAppender 所需的真正的表结构。

票数 -2
EN

Stack Overflow用户

发布于 2013-05-28 08:59:56

您正在搜索错误的logback模块!logback-classic是您正在讨论的模块。您需要的脚本可以在logback-classic\src\main\java\ch\qos\logback\classic\db\<db>.sql下面找到。

例如:mysql.sql:

代码语言:javascript
复制
# 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;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16584888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档