springBoot集成Logback并将日志存储到Oracle数据库_logback创建oracle表的sql文件_呦呦呦橙的博客-程序员秘密

技术标签: 框架搭建  springboot  logback  

参考资料:

Logback官方文档:http://logback.qos.ch/manual/appenders.html,DBAppender章节

Logback GutHub:https://github.com/qos-ch/logback 

 

网上学习一下,集成还是蛮简单的,主要步骤如下:

  1. 如需存储到数据库,首先需要准备logback的数据库表
  2. 添加相关依赖包
  3. 配置logback配置文件,并在springboot中配置
  4. 指定日志参数记录方式

一、创建数据库表

1、表的创建sql可以到Logback在GutHup中的源码库里拿,支持Oracle、mysql等

目录为:/logback-classic/src/main/resources/ch/qos/logback/classic/db/script

2、在scrip下找到自己数据库所需的sql文件即可

3、共三张表,分别是:LOGGING_EVENT、LOGGING_EVENT_EXCEPTION、LOGGING_EVENT_PROPERTY

下面为Oracle下创建表的执行sql地址:

https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/resources/ch/qos/logback/classic/db/script/oracle.sql

二、在pom.xml中添加依赖包

<!--Oracle 驱动 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
<dependency>
    <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5</version>
</dependency>
<!--logback日志集成-->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
</dependency>

 三、logback配置文件

  1. 新建了一个名为:logback-spring.xml为logback配置

配置文件内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml"/>

    <!--打印到控制台-->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">   
        <!-- encoder 默认配置为PatternLayoutEncoder -->   
        <encoder>   
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>   
        </encoder>   
      </appender>

        <!-- 将日志写入数据库 -->
    <appender name="DB-CLASSIC-ORACLE-POOL" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <driverClass>oracle.jdbc.driver.OracleDriver</driverClass>
                <jdbcUrl>jdbc:oracle:thin:@127.0.0.1:1522:myOracle</jdbcUrl>
                <user>sysadmin</user>
                <password>123456</password>
            </dataSource>
        </connectionSource>
    </appender>

    <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
    <springProfile name="test,dev">
        <logger name="org.springframework.web" level="INFO">
            <appender-ref ref="STDOUT"/>
            <appender-ref ref="DB-CLASSIC-ORACLE-POOL"/>
        </logger>
    </springProfile>

</configuration>

四、在springboot的配置就中添加日志配置

logging:
  config: classpath:logback-spring.xml

直接运行,springboot控制台输出的日志相应的也会添加到数据库中,去数据库中查看即可

五、如需手动添加用户操作日志,如下:

Logger logger = LoggerFactory.getLogger(userController.class);

logger.info(msg,"操作用户","操作类型","操作功能");

操作用户、类型、功能分别会对应存储到数据表中的预留的ARG的几个字段里

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u012181568/article/details/82833973

智能推荐

K-means(K均值)算法 简单实现 二维/三维结果展示_kmeans三维聚类_alphaTao的博客-程序员秘密

1. 简介k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程。k-means是最简单的聚类算法之一,应用十分广泛,k代表类簇个数,means代表类簇内数据对象的均值。k-means以距离作为相...

第二周技术总结_技术周感悟_BlackFox丶的博客-程序员秘密

万事万物各有不同,但最能够体现自己价值的事情便是坚守,人活着千万不要让自己成为最底层的那一波。享受物种的优势当你成为了这样的人,你便永无翻身之日。自尊,自爱,自立,自强当然还有最为关键的一点忠于自己,作为我信仰的核心原则,任何时间,任何情况,任何人都绝不可撼动。有关看书上周自己的看书强度还可以,但距离要求的标准还差太多。归结来看的话还是执行力问题,首先是网易一小时计划这个是完全可以...

大数定律与中心极限定理_白水baishui的博客-程序员秘密

大数定律定义:设X1,X2,...,Xn,...X_1,X_2,...,X_n,...X1​,X2​,...,Xn​,...为随机变量序列,XXX为随机变量,若对任意的正数ϵ\epsilonϵ有:lim⁡n→∞P(∣Xn−X∣⩾ϵ)=0\lim_{n\to\infty}P(|X_n-X|\geqslant\epsilon)=0n→∞lim​P(∣Xn​−X∣⩾ϵ)=0或lim⁡n→∞P(∣Xn...

[NEFU ACM大一暑假集训 解题报告]前缀和与差分_鱼竿钓鱼干的博客-程序员秘密

[NEFU ACM大一暑假集训 解题报告]前缀和与差分题量略大,所以解题报告和fjy大佬分了一下工由我负责A-K部分题解(不是AK部分题解啊,哈哈)后半部分题解(LM+R~V+XYZ)由fjy大佬发布剩下的题目烦请有余力的同学自行解决题目A - Molly’s Chemicals题目求区间和为m的幂次的子区间个数,也就是要满足下面这个公式。sum[r]−s[l−1]=mk(k&gt;=0)sum[r]-s[l-1]=m^k(k&gt;=0)sum[r]−s[l−1]=mk(k&gt;=0)

sourceinsight使用技巧_Jasonfang0118的博客-程序员秘密

1 sourceinsight screen font 的默认字体是Verdana的,它是一直变宽字体。在Document style中可以将字体改为定宽的Courier 2 勾掉indent Open Brace和Indent Close Brace的效果: 继上一段,在相对缩进行里, 如果输入"{"或"}", 则自动和上一行列对齐 3 今天把一个用sourceinsight排版整齐

ETL工具Kettle,下载与安装部署_toxcode的博客-程序员秘密

来源:微信公众号 -DD程序鹅原文:https://mp.weixin.qq.com/s/VKUy9mvzv28gNwPlU1X1qA版权声明:本文为博主原创文章,转载请附上原文链接!更多系列可以搜索上面公众号,提前查阅。上篇介绍了Kettle是什么、概念模型和核心组件,相信大家已经对Kettle有了初步认识。该篇主要介绍Kettle下载与window中安装部署。下载官方下载地址:https://community.hitachivantara.com/s/art...

随便推点

MYSQL建表规则_奋斗的小虾米的博客-程序员秘密

建立表规约【强制】表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修改代价很大,因为无法进行预发布,所以字段名称需要慎重考虑。说明:MySQL 在 Windows 下不区分大小写,但在 Linux 下默认是区分大小写。因此,数据库名、表名、字段名,都不允许出现任何大写字母,避免节外生枝。正例:aliyun_admin,rdc_confi...

C# 常量分类与测试_Allenxixi的博客-程序员秘密

C# 常量分类与测试关注我,带你了解C#的魅力

FFmpeg API 之 libavcodec库_H&A的博客-程序员秘密

libavformat 库负责封装和解封装,而 libavcodec 则用于解码和编码。类型 AVPacket 表示编码后的数据,其中包含一个或多个编码后的帧数据。类型 AVFrame 表示解码后,或者说原始的帧数据。编码和解码在某种程度来说,就是两者之间的互相转换。1、编解码概述FFmpeg 提供的 encode/decode API 有如下四个函数 avcodec_send_packet () / avcodec_receive_frame () / avcodec_send_fram.

vue mescroll使用上拉加载、下拉刷新_黎轩栀海的博客-程序员秘密

一个页面多次调用mescroll注:this.navData[1].mescroll.resetUpScroll(); // 点击筛选重置方法&lt;template&gt; &lt;div class="healthy-bean-record-c"&gt; &lt;div class="top"&gt; [外链图片转存失败(img-pPYyrr3K-1562119870434)(https://mp.csdn.net/assets/images/mine/tixianji

freenas 体验_weixin_33698823的博客-程序员秘密

简介FreeNAS是一套免费的NAS服务器,它能将一部普通PC变成网络存储服务器。该软件基于FreeBSD, Python,支持CIFS (samba), FTP, NFS protocols, Software RAID (0,1,5) 及 web 界面的设定工具安装安装过程很简单,几乎都是下一步下一步,但是注意的是fre...

oracle调用plsql函数,oracle plsql开发之一:函数_weixin_39765290的博客-程序员秘密

ORACLE 提供可以把PL/SQL 程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数的唯一区别是函数总向调用者返回数据,而过程则不返回数据。创建函数的语法如下:Sql代码 CREATE[ORREPLACE]FUNCTIONfu...

推荐文章

热门文章

相关标签