我有兴趣使用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_event
和 access_event_header
)与文档引用的 3 个表( logging_event
、 logging_event_property
和 logging_event_exception
)不相同。所以我仍然不知所措......
最佳答案
您正在搜索错误的 logback 模块! logback-classic 是您正在谈论的模块。
您需要的脚本可以在下面找到logback-classic\src\main\java\ch\qos\logback\classic\db\<db>.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/