Reputation: 451
I'm trying to look to a DB and the console with Logback.
Based on the documention I need these tables:
CREATE TABLE mybb.logging_event (
timestamp BIGINT,
formatted_message TEXT,
logger_name VARCHAR(255),
level_string VARCHAR(255),
reference_flag SMALLINT,
caller_filename VARCHAR(255),
caller_class VARCHAR(255),
caller_method VARCHAR(255),
caller_line CHAR,
event_id INT
);
CREATE TABLE mybb.logging_event_property (
event_id INT,
mapped_key VARCHAR(255),
mapped_value TEXT
);
CREATE TABLE mybb.logging_event_exception (
event_id INT,
i SMALLINT,
trace_line VARCHAR(255)
);
And based on this post I need this logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
</pattern>
</encoder>
</appender>
<appender name="db" class="ch.qos.logback.classic.db.DBAppender">
<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
<driverClass>org.mariadb.jdbc.Driver</driverClass>
<url>jdbc:mariadb://localhost:3306/mybb</url>
<user>root</user>
<password>root</password> <!-- no password -->
</connectionSource>
</appender>
<!-- the level of the root level is set to DEBUG by default. -->
<root>
<!--appender-ref ref="stdout" /-->
<appender-ref ref="db" />
<appender-ref ref="stdout"/>
<level value="debug" />
</root>
</configuration>
The ConsoleAppender
works but the DBAppender
doesn't work at all. There is no exception on the console or something else - the database is empty. What am I missing?
Upvotes: 0
Views: 606
Reputation: 451
The doc I used seems to be outdated. After a long look in the right repo I found this beauty here:
# 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;
With this it works like a charm. If somebody else need scripts for different DB's here is the link: https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/resources/ch/qos/logback/classic/db/script/
Upvotes: 1