logback将日志输出到数据库时,数据库必须包含三张表;
建表语句如下:
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;
新建logback配置文件logback-spring.xml
在application.properties配置文件中设置logback配置文件路径:logging.config=classpath:logback-spring.xml
logback
info
${CONSOLE_LOG_PATTERN}
UTF-8
com.mysql.cj.jdbc.Driver
jdbc:mysql:数据库地址
数据库账号
数据库密码
在使用过程中遇到一个坑,出现以下报错信息:
DBAppender cannot function if the JDBC driver does not support getGeneratedKeys method and without a specific SQL dialect
网上给了好多种情况和解决方法都没有效果,最后发现是数据库密码写错了,经过尝试,发现只要logback配置文件中有错误的地方都会报这个错,大多数情况下和
JDBC driver并没有关系。