springBoot项目用logback将日志写到MySQL数据库

  • 添加依赖
		<dependency>
            <groupId>commons-dbcpgroupId>
            <artifactId>commons-dbcpartifactId>
            <version>1.4version>
        dependency>

        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            
            <scope>runtimescope>
        dependency>
  • 配置文件中添加相关配置(我的配置文件名称是application.properties)
  spring:
    datasource:
    type: com.zaxxer.hikari.HikariDataSource
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: root
    url: jdbc:mysql:///localhost:3306/your database?characterEncoding=UTF-8
  • 添加logback-test.xml文件,其中包含对于日志输出的一些设置,注意下图红框中上午内容:一定记得把数据库信息改成自己的,然后需要注意的是如果数据库的版本在6以下,要注意配置文件的驱动是com.mysql.jdbc.Driver而不是com.mysql.cj.jdbc.Driver
    springBoot项目用logback将日志写到MySQL数据库_第1张图片resource下面的logback-test.xml文件的内容如下:

<configuration debug="false">
    
    <property name="LOG_HOME" value="/home/admin" />

    
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
        encoder>
    appender>

    
    <appender name="application_file"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/info/info.log.%d{yyyy-MM-dd}.logFileNamePattern>
            
            <MaxHistory>30MaxHistory>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
        encoder>
        
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>500MBMaxFileSize>
        triggeringPolicy>
    appender>

    
    <appender name="error_file"  class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            
            <FileNamePattern>${LOG_HOME}/error/error.log.%d{yyyy-MM-dd}.logFileNamePattern>
            
            <MaxHistory>30MaxHistory>
        rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%npattern>
        encoder>
        
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>500MBMaxFileSize>
        triggeringPolicy>
        
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>errorlevel>
            <onMatch>ACCEPTonMatch>
            <onMismatch>DENYonMismatch>
        filter>
    appender>

    
    <appender name="db_classic_mysql_pool" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">
            <dataSource class="org.apache.commons.dbcp.BasicDataSource">
                <driverClassName>com.mysql.jdbc.DriverdriverClassName>
                <url>jdbc:mysql://127.0.0.1:3306/wx_ts?serverTimezone=Asia/Shanghaiurl>
                <username>rootusername>
                <password>rootpassword>
            dataSource>
        connectionSource>
    appender>

    
    <logger name="com.apache.ibatis" level="TRACE"/>
    <logger name="java.sql.Connection" level="DEBUG" />
    <logger name="java.sql.Statement" level="DEBUG"/>
    <logger name="java.sql.PreparedStatement" level="DEBUG"/>

    
    <root level="INFO">
        <appender-ref ref="stdout" />
        <appender-ref ref="application_file" />
        <appender-ref ref="error_file"/>
        <appender-ref ref="db_classic_mysql_pool" />
    root>

configuration>

  • 找到下面的文件,根据其中的SQL创建数据库+表:
    springBoot项目用logback将日志写到MySQL数据库_第2张图片
  • 添加测试类的依赖以及测试类(注意scope的属默认即可,即为compile,不能是test)
		<dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>

        dependency>
@RunWith(SpringRunner.class)
@SpringBootTest
public class LogbackTest {

    private final Logger logger= LoggerFactory.getLogger(LogbackTest.class);

    @Test
    public void LogToSql(){
        logger.info("数据库日志info");
        logger.error("数据库日志error");
    }
}

运行测试类即可成功看到结果:
springBoot项目用logback将日志写到MySQL数据库_第3张图片
参考文档

你可能感兴趣的:(JAVA,后端#,SpringBoot)