前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Springboot集成logback将错误日志同步到数据库

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

作者头像
分母为零
发布2019-08-06 11:02:58
2.6K0
发布2019-08-06 11:02:58
举报
文章被收录于专栏:分母为零分母为零

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

环境:springboot+logback+oracle

配置pom.xml

代码语言:javascript
复制
<!--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 配置

代码语言:javascript
复制
 <!-- 将日志写入数据库 -->
    <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>

测试

代码语言:javascript
复制
Logger logger = LoggerFactory.getLogger(userController.class);

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

查看数据表

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

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

代码语言:javascript
复制
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;  

用途

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 分母为零 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Springboot集成logback将错误日志同步到数据库
    • 配置pom.xml
      • 创建数据表
        • logbcak-spring.xml 配置
          • 测试
            • 查看数据表
              • 用途
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档