博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
日志写入数据库:Logback-DBAppender
阅读量:2168 次
发布时间:2019-05-01

本文共 4198 字,大约阅读时间需要 13 分钟。

Logback-DBAppender

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

这三个表是 logging_eventlogging_event_propertylogging_event_exception
在使用DBAppender之前,它们必须存在。Logback附带了创建表的SQL脚本。
它们可以在 logback-classic/src/main/java/ch/qos/logback/classic/db/script 文件夹下找到。
对于每个最流行的数据库系统,都有一个特定的脚本。如果您的特定类型的数据库系统缺少脚本,那么应该很容易以现有脚本为例编写一个脚本。
如果JDBC驱动程序支持JDBC 3.0规范中引入的getGeneratedKeys方法,假设您已经创建了如上所述的适当的数据库表,那么就不需要额外的步骤。
否则,必须有适合您的数据库系统的sql方言。目前,logback有H2、HSQL、MS SQL Server、MySQL、Oracle、PostgreSQL、SQLLite和Sybase等多种方言。

如前所述,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;

maven 依赖

通过使用 platform-bom 来管理依赖的版本问题。使用 druid 作为 JDBCAppender 的连接池。

io.spring.platform
platform-bom
Cairo-RELEASE
import
pom
ch.qos.logback
logback-core
true
runtime
ch.qos.logback
logback-classic
true
runtime
org.slf4j
slf4j-api
true
mysql
mysql-connector-java
com.alibaba
druid
1.1.10

日志配置文件:logback.xml

ch.qos.logback.classic.db.DBAppender 是 logback 中 DBAppender 的实现类。

ch.qos.logback.core.db.DataSourceConnectionSource 是 DBAppender 的管理数据源的类。

com.alibaba.druid.pool.DruidDataSource 是数据源连接池,你也可以选择其它数据源连接池。

%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n
com.mysql.jdbc.Driver
jdbc:mysql://192.168.120.63:3306/learn?useSSL=false
root
123456

启动

package com.littlefxc.examples.logback;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * @author fengxuechao * @date 2019/2/12 **/public class App {
private static final Logger log = LoggerFactory.getLogger(App.class); public static void main(String[] args) {
long l = System.currentTimeMillis(); log.debug("This is debug"); long r = System.currentTimeMillis(); System.out.println(r - l); log.info("This is info"); log.warn("This is warn"); log.error("This is error"); log.error("This is exception", new RuntimeException("this is a exception")); }}

转载地址:http://ktxzb.baihongyu.com/

你可能感兴趣的文章
Java并发指南7:JUC的核心类AQS详解
查看>>
Java并发指南8:AQS中的公平锁与非公平锁,Condtion
查看>>
Java网络编程和NIO详解6:Linux epoll实现原理详解
查看>>
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
查看>>
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
查看>>
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
查看>>
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
查看>>
深入理解JVM虚拟机1:JVM内存的结构与消失的永久代
查看>>
深入理解JVM虚拟机3:垃圾回收器详解
查看>>
深入理解JVM虚拟机4:Java class介绍与解析实践
查看>>
深入理解JVM虚拟机5:虚拟机字节码执行引擎
查看>>
深入理解JVM虚拟机6:深入理解JVM类加载机制
查看>>
深入了解JVM虚拟机8:Java的编译期优化与运行期优化
查看>>
深入理解JVM虚拟机9:JVM监控工具与诊断实践
查看>>
深入理解JVM虚拟机10:JVM常用参数以及调优实践
查看>>
深入理解JVM虚拟机11:Java内存异常原理与实践
查看>>
深入理解JVM虚拟机12:JVM性能管理神器VisualVM介绍与实战
查看>>
深入理解JVM虚拟机13:再谈四种引用及GC实践
查看>>
Spring源码剖析1:Spring概述
查看>>
Spring源码剖析2:初探Spring IOC核心流程
查看>>