java - Logback DBAppender DDL?

标签 java jdbc slf4j logback appender

我有兴趣使用slf4j-logback在我的项目中,想使用 DBAppender .

显然,除非您实现自己的 DBNameResolver ,您必须遵守上面链接中概述的特定表格标准/架构。具体来说,您需要 3 个包含非常具体的列的表。

虽然该页面上的信息相当详细,但它不包含任何“表元数据”(键、索引、默认值等),我想知道我们是否需要自己添加这些元数据自行决定或是否需要用特定值定义它们。

我尝试寻找用于创建这些表的 DDL 或 SQL 脚本,但没有找到。这样的脚本存在吗?其他 SOers 是如何处理这些的创建的 DBAppender table ?提前致谢!

编辑:我发现this article on Grails讨论DBAppender :

You must create the database tables yourself. There are three tables, and the Logback distribution ships with sample DDL for several popular databases.

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

logback-1.0.13/logback-access/src/main/java/ch/qos/logback/access/db/script/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_eventlogging_event_propertylogging_event_exception )相同。所以我仍然不知所措......

最佳答案

您正在搜索错误的 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;

关于java - Logback DBAppender DDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16584888/

相关文章:

java - 在 Hadoop MapReduce 作业中链接 Multi-Reducer

java - 从数据库流式传输大型 BLOB

java - 仅在 finally block 中关闭 JDBC 连接?

java - 未找到 slf4j 依赖项

java - 记录可选键值

java - ensureIndexIsVisible(int) 不工作

java - 如何循环并为文件中的每个单词生成哈希键

java - 尝试使用 Spring 应用程序中的实体管理器从数据库中删除记录后出现 NullPointer 异常

postgresql - 如何使用 JDBC 将 (Py)Spark 连接到 Postgres 数据库

maven - 如何抑制关于多个绑定(bind)的 SLF4J 警告?