专栏首页分母为零Springboot集成logback将错误日志同步到数据库

Springboot集成logback将错误日志同步到数据库

Springboot集成logback将错误日志同步到数据库

环境:springboot+logback+oracle

配置pom.xml

<!--Oracle 驱动 -->
<dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3</version>
</dependency>
<!--druid 数据库连接池 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.1.10</version>
</dependency>

创建数据表

在scrip下找到自己数据库所需的sql文件即可,连接为:https://github.com/qos-ch/logback/blob/master/logback-classic/src/main/resources/ch/qos/logback/classic/db/script/oracle.sql

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

由于使用的数据库为oracle,所以选择oracle.sql。

logbcak-spring.xml 配置

 <!-- 将日志写入数据库 -->
    <appender name="DB-ORACLE-POOL" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="com.alibaba.druid.pool.DruidDataSource">
                <driverClassName>oracle.jdbc.OracleDriver</driverClassName>
                <url>jdbc:oracle:thin:@xxx.xx.xx:3221:xe</url>
                <username>xxxxx</username>
                <password>xxxx</password>
            </dataSource>
        </connectionSource>
        <!--这里设置日志级别为error-->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>error</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!-- 日志输出级别 -->
    <root level="INFO">
        <appender-ref ref="DB-ORACLE-POOL"/>

    </root>

测试

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

logger.info("info日志");
logger.error("error日志");

查看数据表

发现error级别日志插入到数据表,而info级别的没有。

由于数据库存的是时间戳,我们希望看的时间是YYYY-MM-DD HH24:MI:SS。转换语句为

SELECT TO_CHAR(TIMESTMP / (1000 * 60 * 60 * 24) 
       TO_DATE('1970-01-01 08:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'YYYY-MM-DD HH24:MI:SS') AS CDATE  
FROM LOGGING_EVENT t;  

用途

我把该功能可以用在离线任务中。可以快速定位问题出现的原因和位置。

本文分享自微信公众号 - 分母为零(gmg1014),作者:gmg

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Neo4j之导入数据

    通过neo4j-admin方式导入的话,需要暂停服务,并且需要清除graph.db,这样才能导入进去数据。而且,只能在初始化数据时,导入一次之后,就不能再次导入...

    分母为零
  • 什么是微服务?

    微服务(Microservice)这个概念是2012年出现的,作为加快Web和移动应用程序开发进程的一种方法,2014年开始受到各方的关注,而2015年,可以说...

    分母为零
  • 十二要素

    一份基准代码(Codebase),多份部署(deploy) 尽管每个应用只对应一份基准代码,但可以同时存在多份部署。每份 部署 相当于运行了一个应用的实例。

    分母为零
  • ASP.NET Core应用中如何记录和查看日志

    日志记录不仅对于我们开发的应用,还是对于ASP.NET Core框架功能都是一项非常重要的功能特性。我们知道ASP.NET Core使用的是一个极具扩展性的日志...

    蒋金楠
  • 如何从Serilog请求日志记录中排除健康检查终结点

    这是在ASP.NET Core 3.X中使用Serilog.AspNetCore系列文章的第四篇文章:。

    依乐祝
  • 史上最全的OGG基础知识整理

    GoldenGate软件是一种基于日志的结构化数据复制软件。GoldenGate 能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步...

    JiekeXu之路
  • 这次让我们真的读一下Workerman源码(七)

    上一节主要内容是分析Workerman进程管理相关内容的源码,今天是完结篇,主要内容是reload、fork还有monitor三部分内容。

    老李秀
  • 使用Kali Nethunter破解802.1x安全性WiFi

    背景 笔者学校的无线网络采用1x认证方式,所以你懂的。之前参考GitHub上的一个项目在Kali2.0上部署成功,但是在手机端的情况比较不同,猜测是因为架构有一...

    FB客服
  • 黄骞:我们是如何在一张地图上表现86万个数据的

    作为一名数据工作者,我每天会接触到很多的数据可视化成果,美好的可视化作品简洁明快炫酷非常,让人心情舒畅。

    华章科技
  • 爬虫正传-江湖路远-0103-入乡随俗

    尽管已经可以行侠仗义,但是初入江湖的少侠依然少了很多江湖经验,完全不顾及别人的饭碗,疯狂的数据采集造成的压力引起了服务器地主们的注意,发现系统资源严重消耗,于是...

    大牧莫邪

扫码关注云+社区

领取腾讯云代金券