logback 查看mysql输出

简介

logback 是一个用于记录日志的开源框架,它是 log4j 框架的继承者。它支持多种日志输出方式,包括控制台、文件、数据库等。本文将介绍如何使用 logback 查看 MySQL 数据库的输出,并提供相应的代码示例。

准备工作

在开始之前,我们需要准备以下环境:

  1. MySQL 数据库:确保你已经安装并成功启动了 MySQL 数据库。如果没有安装,可以从官方网站下载并按照指南进行安装。

  2. Maven 项目:创建一个基于 Maven 的 Java 项目,并添加 logback 和 MySQL 连接器的依赖。

    <dependencies>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
        </dependency>
    </dependencies>
    

配置 logback.xml

在项目的资源目录下创建一个名为 logback.xml 的配置文件,并添加以下内容:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    
    <appender name="MYSQL" class="ch.qos.logback.core.db.DBAppender">
        <connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>com.mysql.cj.jdbc.Driver</driverClass>
            <url>jdbc:mysql://localhost:3306/mydatabase</url>
            <user>root</user>
            <password>password</password>
        </connectionSource>
    </appender>
    
    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="MYSQL" />
    </root>
</configuration>

上述配置文件定义了两个 appender,一个用于输出日志到控制台(STDOUT),另一个用于输出日志到 MySQL 数据库(MYSQL)。你可以根据需要修改数据库连接的相关配置。

编写测试代码

创建一个名为 Main.java 的类,并添加以下代码:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
    private static final Logger logger = LoggerFactory.getLogger(Main.class);

    public static void main(String[] args) {
        logger.debug("This is a debug message.");
        logger.info("This is an info message.");
        logger.warn("This is a warning message.");
        logger.error("This is an error message.");
    }
}

上述代码通过 SLF4J 的 LoggerFactory 获取一个 Logger 实例,然后使用该实例记录不同级别的日志。

运行测试代码

在命令行中切换到项目的根目录,并执行以下命令:

mvn clean compile exec:java -Dexec.mainClass="Main"

上述命令将编译项目并运行 Main 类。你将在控制台上看到类似如下的日志输出:

2022-01-01 10:00:00 [main] DEBUG com.example.Main - This is a debug message.
2022-01-01 10:00:01 [main] INFO  com.example.Main - This is an info message.
2022-01-01 10:00:02 [main] WARN  com.example.Main - This is a warning message.
2022-01-01 10:00:03 [main] ERROR com.example.Main - This is an error message.

此时,日志已成功输出到控制台。接下来,我们将配置 logback,使其将日志输出到 MySQL 数据库。

查看 MySQL 输出

首先,在 MySQL 数据库中创建一个名为 logs 的表,用于存储日志信息。可以使用以下 SQL 语句创建表:

CREATE TABLE logs (
  id INT AUTO_INCREMENT PRIMARY KEY,
  timestamp DATETIME,
  level VARCHAR(10),
  logger VARCHAR(100),
  message TEXT
);

然后,修改 logback.xml 配置文件,使其将日志输出到 logs 表中:

<appender name="MYSQL" class="ch.qos