logback日志输出至数据库
我们知道将数据库输出到不同的地方需要使用不同的appender表示,那下面了解一下输出到数据库的DBAppender。
1.DBAppender
由于DBAppender会把记录写到数据库中,因此我们必须知道数据库的表结构。这个结构是固定的,但是可以通过继承DBAppenderBase类来实现修改表的结构,详细做法参考https://blog.csdn.net/qq_20914913/article/details/92830914#%E4%B8%80%E3%80%81%E5%8E%9F%E5%A7%8Blogback%20%C2%A0MySQL%E9%85%8D%E7%BD%AE
1.根据官方文档创建数据库
DBAppender会把记录事件写入数据库的三张表(logging_event、logging_event_property、logging_event_exception),并且这三张表的结构是固定的。创建这三张表的脚本如下:
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;
2.ConnectionSource
ConnectionSource有3种类型实现:DataSourceConnectionSource、DriverManagerConnectionSource 和 JNDIConnectionSource。
1.DriverManagerConnectionSource类型
DriverManagerConnectionSource类型是直接使用DriverManager通过jdbc驱动连接数据库的,而不是使用数据源DataSource获得数据库连接。
xml文件配置:
注意:使用DriverManager获得数据库连接的方式的配置格式是相同的,因此不需要改动格式。标准的格式如上图所示。以后使用直接copy就可以了。
2.DataSourceConnectionSource类型
该方式是从javax.sql.DataSource取得连接的。由于DataSource有很多种类型的实现,因此不同的实现类中具有相同功能的属性的属性名可能不尽相同,因此可能造成<dataSource>标签的子标签名不尽相同。
xml文件配置:
由于DataSource有不同的实现,比如Druid、c3p0、dbcp数据源等。每一种数据源对用户名与密码驱动等属性的命名可能不一致,因此导致配置文件的标签有可能不一样。下面列举一下Druid与c3p0类型数据源的appenderde的配置。
1.DBAppender配置
1.Druid类型数据源的配置
需要导入druid-1.0.29.jar文件,jar下载地址:http://repo1.maven.org/maven2/com/alibaba/druid/
2.c3p0类型数据源的配置
需要导入c3p0-0.9.1.2.jar文件,jar下载地址:http://sourceforge.net/projects/c3p0/
3.dbcp类型数据源的配置
需要导入Commons-dbcp-1.x.jar与Commons-pool-1.x.jar两个jar文件,下载网址:http://commons.apache.org/proper/commons-dbcp/download_dbcp.cgi
总结:
通过配置Druid类型数据源的DBAppender与c3p0类型数据源的DBAppender以及dbcp类型数据源的DBAppender可以发现他们有以下区别:存储用户名、驱动、资源定位符使用的标签是不同的。
3.JNDIConnectionSource类型
3.在ConnectionSource中应用连接池
下面了解一下连接池的配置
logback日志输出至数据库的更多相关文章
- springboot+logback日志输出企业实践(下)
目录 1.引言 2. 输出 logback 状态数据 3. logback 异步输出日志 3.1 异步输出配置 3.2 异步输出原理 4. springboot 多环境下 logback 配置 5. ...
- Asp.Net Core NLog 将日志输出到数据库以及添加LayoutRenderer的支持
在这之前打算用Apache的Log4Net,但是发现其AdoNetAppender方法已经不存在了,无法使用配置文件直接输出到数据库了,因此我便改用了NLog框架. 一.对项目添加NLog 通过Nug ...
- [日志] spring boot + logback 日志输出配置
一.输出日志到控制台 springboot有很多starter(参考starter)方便快速构建项目依赖组件,logback是springboot默认的日志组件,启动即可看到打印在控制台输出的info ...
- springboot+logback日志输出企业实践(上)
目录 1.引言 2.logback简介 3. springboot默认日志框架-logback 3.1 springboot示例工程搭建 3.2 日志输出与基本配置 3.2.1 日志默认输出 3.2. ...
- vscode springboot logback 日志输出到不同文件
参照了:https://blog.csdn.net/appleyk/article/details/78717388# 在src\main\resources中新建一个logback-boot.xml ...
- 使用log4net 日志输出到数据库MySQL
使用Log4Net的输出日志到MySQL 使用步骤如下: 1. 添加引用Log4Net.dll, mysql.data.dll到工程中 note: mysql.data.dll 版本要高,最好到mys ...
- Logback日志输出到ELK
用docker-compose本机部署elk docker-compose.yml version: "3" services: es01: image: docker.elast ...
- SpringBoot系列——Logback日志,输出到文件以及实时输出到web页面
前言 SpringBoot对所有内部日志使用通用日志记录,但保留底层日志实现.为Java Util Logging.Log4J2和Logback提供了默认配置.在不同的情况下,日志记录器都预先配置为使 ...
- Logback 日志持久化
Logback是log4j的增强版,比log4j更具灵活,其提供了将日志输出到数据库的功能,本文将介绍如何将指定的日志输出到mysql中. 一.自定义log标志 由于Logback原生的配置会将所有的 ...
随机推荐
- codeforces#1248D2. The World Is Just a Programming Task(括号匹配转化为折线处理)
题目链接: http://codeforces.com/contest/1248/problem/D2 题意: 可以执行一次字符交换的操作 使得操作后的字符串,循环移位并且成功匹配的方案最多 输出最多 ...
- Codeforces Round #566 (Div. 2)题解
时间\(9.05\)好评 A Filling Shapes 宽度为\(3\),不能横向填 考虑纵向填,长度为\(2\)为一块,填法有两种 如果长度为奇数则显然无解,否则\(2^{n/2}\) B Pl ...
- docker tcp配置
1. Ubuntu Docker deamon监听tcp端口设置 https://www.jianshu.com/p/e278b0e44e1b 2. Centos https://www.cnblog ...
- GCC编译流程及常用编辑命令
GCC 编译器在编译一个C语言程序时需要经过以下 4 步: 将C语言源程序预处理,生成.i文件. 预处理后的.i文件编译成为汇编语言,生成.s文件. 将汇编语言文件经过汇编,生成目标文件.o文件. 将 ...
- How to transform the day time images to night time ? A series of paper review and some thinkings about this point.
How to transform the day time images to night time ? A series of paper review and some thinkings ab ...
- 中间件 | mq消息队列解说
消息队列 1.1 什么是消息队列 我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用.消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系 ...
- Bitmap之extractAlpha函数抽取alpha值
package com.loaderman.customviewdemo; import android.app.Activity; import android.graphics.Bitmap; i ...
- Spring Cloud Eureka集群部署到Linux环境
还是三板斧:先改配置文件,支持集群,然后出包,上传到linux环境(3个节点),最后启动jar包跑起来. 1.在原eureka服务端代码(参见Greenwich.SR2版本的Spring Cloud ...
- 123456123456#0#-----com.threeapp.xiongMaoPaoPao01----熊猫跑酷01
com.threeapp.xiongMaoPaoPao01----熊猫跑酷01
- SpringCloud学习成长之 十一 Docker部署cloud项目
一.docker简介 Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机). ...