springboot集成Logback 日志写入数据库

这篇具有很好参考价值的文章主要介绍了springboot集成Logback 日志写入数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

springboot集成Logback 日志写入数据库

引入maven依赖

 <!--        logback日志-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>

注意:springboot内部是有Logback的包,但是本人使用的时候缺少部分类文件,因此单独映入了一次

建表

logback有三张表logging_event、logging_event_exception、logging_event_property,不需要自己创建,只需要在如下位置找到自己保存的库表生成sql复制运行即可.

springboot集成Logback 日志写入数据库,数据库,spring boot,logback

添加配置文件(logback-spring.xml)

<?xml version="1.0" encoding="UTF-8"?>
<!--scan="true" 表示每60秒检测自动加载配置文件,debug="false" 无需打印logback自身日志信息-->
<configuration
    scan="false"
    scanPeriod="60 seconds"
    debug="false">

    <!--定义日志输出路径-->
    <property name="log.filepath" value="logs" />
    <!--定义日志展示各式
        %d{yyyy-MM-dd HH:mm:ss.SSS}  定义日志展示时间
        [%thread]  当前线程名称
        %5-level 空出5个空格显示日志级别
        %logger{100} 显示全限定类名,最大长度100
        %msg%n   日志信息及换行-->
    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{100}  %msg%n" />

    <!-- 彩色日志依赖的渲染类与彩色日志格式 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

    <!--输出到控制台-->
    <!-- 数据库的连接属性(注意,写自己的数据库配置文件目录) -->
    <springProperty scope="context" name="DATA_SOURCE" source="spring.datasource.type" />
    <springProperty scope="context" name="JDBC_URL" source="spring.datasource.dynamic.datasource.yeWu.url" />
    <springProperty scope="context" name="USER_NAME" source="spring.datasource.dynamic.datasource.yeWu.username" />
    <springProperty scope="context" name="PASSWORD" source="spring.datasource.dynamic.datasource.yeWu.password" />
    <springProperty scope="context" name="DRIVER_CLASS_NAME" source="spring.datasource.dynamic.datasource.yeWu.driver-class-name" />

    <!-- 输出到数据库 -->
    <appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="${DATA_SOURCE}">
                <url>${JDBC_URL}</url>
                <username>${USER_NAME}</username>
                <password>${PASSWORD}</password>
                <driverClassName>${DRIVER_CLASS_NAME}</driverClassName>
            </dataSource>
        </connectionSource>
    </appender>

    <!--定义日志输出媒介,控制台输出-->
    <appender name="CONSOLE_APPENDER" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <!--定义日志输格式-->
            <pattern>${log.pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <!--定义debug级别日志输出-->
    <appender name="DEBUG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.filepath}/debug.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档-->
            <!--<fileNamePattern>${log.filepath}/debug-%d{yyyy-MM-dd_HH_mm}.log.gz</fileNamePattern>-->
            <fileNamePattern>${log.filepath}/debug-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过100M,若超过100M,日志文件会以索引0开始,命名日志文件,例如debug-2013-12-21.0.log.gz -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志最多保存的份数-->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录debug级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>debug</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--定义info级别日志输出-->
    <appender name="INFO_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.filepath}/info.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档-->
            <!--<fileNamePattern>${log.filepath}/info-%d{yyyy-MM-dd_HH_mm}.log.gz</fileNamePattern>-->
            <fileNamePattern>${log.filepath}/info-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过100M,若超过100M,日志文件会以索引0开始,命名日志文件,例如info-2013-12-21.0.log.gz -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志最多保存的份数-->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录info级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>info</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--定义warn级别日志输出-->
    <appender name="WARN_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.filepath}/warn.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档-->
            <!--<fileNamePattern>${log.filepath}/warn-%d{yyyy-MM-dd_HH_mm}.log.gz</fileNamePattern>-->
            <fileNamePattern>${log.filepath}/warn-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过100M,若超过100M,日志文件会以索引0开始,命名日志文件,例如warn-2013-12-21.0.log.gz -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志最多保存的份数-->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录warn级别的 -->
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>warn</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
    </appender>

    <!--定义error级别日志输出-->
    <appender name="ERROR_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 正在记录的日志文件的路径及文件名 -->
        <file>${log.filepath}/error.log</file>
        <!--日志文件输出格式-->
        <encoder>
            <pattern>${log.pattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 日志记录器的滚动策略-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!-- 日志归档-->
            <!--<fileNamePattern>${log.filepath}/error-%d{yyyy-MM-dd_HH_mm}.log.gz</fileNamePattern>-->
            <fileNamePattern>${log.filepath}/error-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
            <!-- 除按日志记录之外,还配置了日志文件不能超过100M,若超过100M,日志文件会以索引0开始,命名日志文件,例如error-2013-12-21.0.log.gz -->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>100MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!--日志最多保存的份数-->
            <maxHistory>10</maxHistory>
        </rollingPolicy>
        <!-- 此日志文件只记录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"/>
        <appender-ref ref="CONSOLE_APPENDER" />
        <appender-ref ref="DEBUG_APPENDER" />
        <appender-ref ref="INFO_APPENDER" />
        <appender-ref ref="WARN_APPENDER" />
        <appender-ref ref="ERROR_APPENDER" />
    </root>

</configuration>

在上面的配置内容中,最重点的是配置 MySQL 数据库的连接信息和 DBAppender,并引用 `DBAppender

<!-- 数据库的连接属性 -->
<springProperty scope="context" name="DATA_SOURCE" source="spring.datasource.type" />
<springProperty scope="context" name="JDBC_URL" source="spring.datasource.druid.url" />
<springProperty scope="context" name="USER_NAME" source="spring.datasource.druid.username" />
<springProperty scope="context" name="PASSWORD" source="spring.datasource.druid.password" />
<springProperty scope="context" name="DRIVER_CLASS_NAME" source="spring.datasource.druid.driver-class-name" />

<!-- 输出到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
    <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
        <dataSource class="${DATA_SOURCE}">
            <url>${JDBC_URL}</url>
            <username>${USER_NAME}</username>
            <password>${PASSWORD}</password>
            <driverClassName>${DRIVER_CLASS_NAME}</driverClassName>
        </dataSource>
    </connectionSource>
</appender>

<!-- 引用 DBAppender -->
<root level="info">
    <appender-ref ref="DB"/>
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="DEBUG_FILE" />
    <appender-ref ref="INFO_FILE" />
    <appender-ref ref="WARN_FILE" />
    <appender-ref ref="ERROR_FILE" />
</root>

springboot集成Logback 日志写入数据库,数据库,spring boot,logback

如果只希望记录某个包(如 com.gz.bussines)的错误日志信息到 MySQL 数据库,可以参考以下配置内容文章来源地址https://www.toymoban.com/news/detail-732591.html

<!-- 输出到数据库 -->
<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">
    <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
        <dataSource class="${DATA_SOURCE}">
            <url>${JDBC_URL}</url>
            <username>${USER_NAME}</username>
            <password>${PASSWORD}</password>
            <driverClassName>${DRIVER_CLASS_NAME}</driverClassName>
        </dataSource>
    </connectionSource>
    <!-- 数据库只记录ERROR级别的 -->
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
</appender>

<!-- 指定某个包的日志记录方式 -->
<logger name="com.gz.bussines" value="ERROR"  additivity="false" >
    <appender-ref ref="DB"/>
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="ERROR_FILE" />
</logger>

<root level="info">
    <appender-ref ref="CONSOLE" />
    <appender-ref ref="DEBUG_FILE" />
    <appender-ref ref="INFO_FILE" />
    <appender-ref ref="WARN_FILE" />
    <appender-ref ref="ERROR_FILE" />
</root>

到了这里,关于springboot集成Logback 日志写入数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SpringBoot3数据库集成

    标签:Jdbc.Druid.Mybatis.Plus; 项目工程中,集成数据库实现对数据的增晒改查管理,是最基础的能力,而对于这个功能的实现,其组件选型也非常丰富; 通过如下几个组件来实现数据库的整合; Druid连接池 :阿里开源的数据库连接池,并且提供 SQL 执行的监控能力; MybatisPlu

    2024年02月13日
    浏览(43)
  • Springboot配置Log4j日志系统,并将日志存入数据库

    Log4j是apache公司开发的一款日志管理系统,可以高效的管理系统中出现的BUG或者各种信息,并且可以已文本的方式或者数据库存入的方式来记录数据 在pom.xml中导入Log4j依赖 在Resources文件夹下创建一个log4j.properties文件 编写配置文件 这是个测试类 可以看见,控制台和数据库表

    2024年02月08日
    浏览(88)
  • SpringBoot 如何使用 EmbeddedDatabaseBuilder 进行数据库集成测试

    在开发 SpringBoot 应用程序时,我们通常需要与数据库进行交互。为了确保我们的应用程序在生产环境中可以正常工作,我们需要进行数据库集成测试,以测试我们的应用程序是否能够正确地与数据库交互。在本文中,我们将介绍如何使用 SpringBoot 中的 EmbeddedDatabaseBuilder 来进行

    2024年02月16日
    浏览(55)
  • Springboot集成轻量级内存数据库H2

    最近做一个小项目,需要存储的数据不多,用mysql太重了,用其他的Redis之类的也不太方便,然后就想到了H2,他就是一个jar包,可以和项目一起打包发布,非常适合数据量不多的微小系统,下面大概介绍下H2的基本知识和Springboot的集成 H2是一个用Java开发的嵌入式数据库,它本

    2024年02月07日
    浏览(46)
  • jdk17 SpringBoot JPA集成多数据库

    switchRegion(切换地区)功能, 客户端可手动切换地区 , 查询不同的数据库, 后台根据地区切换数据库, 请求头添加region的key

    2024年02月14日
    浏览(37)
  • hibernate及SpringBoot集成Jpa实现对数据库操作

    首先使用Maven工程和junit完成hibernate对数据库的简单操作,完成之后在使用SpringBoot集成Jap完成hibernate对数据库的操作。本文仅供新手学习查看,具体线上使用需要对代码继续进行相关优化。 1、先创建一个Maven工程,导入相关依赖。 2、在resources目录下创建hibernate.cfg.xml 3、创建

    2024年02月03日
    浏览(43)
  • 【SpringBoot笔记28】SpringBoot集成ES数据库之操作doc文档(创建、更新、删除、查询)

    这篇文章,主要介绍SpringBoot集成ES数据库之操作doc文档(创建、更新、删除、查询)。 目录 一、SpringBoot操作ES文档数据 1.1、创建文档 1.2、更新文档 1.3、删除文档

    2024年02月08日
    浏览(49)
  • java springboot架构 自定义注解保存项目业务日志,使用线程池保存到数据库

    目录 1:pom.xml依赖 2:注解类样例 3:枚举类 4:具体处理方法类 5:线程池类 1:pom.xml依赖 2:注解类样例 3:枚举类 4:具体处理方法类 5:线程池类

    2024年02月15日
    浏览(47)
  • Logback日志记录只在控制台输出sql,未写入日志文件【解决】

    原因:持久层框架对于Log接口实现方式不一样,日记记录的位置及展示方式也也不一样 可以分别配置到两个环境中,dev用StdOutImpl,prod用Slf4jImpl或者其他的都行,具体需要看他是如何实现的,使用logger对象输出的都是会写入日志的,使用System.out或err的只会在控制台显示,以下是实验

    2024年02月09日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包