📜  log4j-登录数据库(1)

📅  最后修改于: 2023-12-03 15:02:47.635000             🧑  作者: Mango

log4j 登录数据库

介绍

log4j 是 Java 应用程序中常用的日志工具。它可以将应用程序中的日志记录格式化,分类和持久化,使程序员可以轻松地查找和调试问题。

在本文中,我们将探讨如何使用 log4j 记录应用程序登录数据库的事件。我们将介绍 log4j 的基本概念,然后提供一个示例,演示如何使用 JDBC 连接到 MySQL 数据库,并使用 log4j 记录登录事件。

log4j

Log4j 是 Apache Jakarta 项目的一个子项目,它是一个基于 Java 语言的日志工具。它可以帮助程序员在应用程序中记录日志,以便于调试和故障排除。

Log4j 的基本概念是 Logger、Appender、Layout 和 Level。

  • Logger:它是 log4j 中最重要的组件。Logger 对象用于记录应用程序中的日志信息。每个 Logger 对象都有一个唯一的名称,用于在应用程序中标识该 Logger。
  • Appender:它定义了日志的输出目的地。Log4j 支持多种 Appender,例如 ConsoleAppender、FileAppender 等。
  • Layout:它定义了日志信息的格式。Log4j 支持多种 Layout,例如 PatternLayout、XMLLayout 等。
  • Level:它定义了日志信息的重要程度。Log4j 支持多个 Level,例如 ERROR、WARN、INFO、DEBUG 等。
JDBC

Java DataBase Connectivity(JDBC)是 Java 编程语言中的一种 API,它定义了一组用于访问数据库的接口和类。JDBC 可以使开发者用标准的 Java 类来实现数据库操作。

使用 Log4j 记录数据库登录事件
准备

在开始本教程之前,确保你已经安装了以下软件:

  • JDK:Java Development Kit,版本 8 或以上。
  • MySQL:版本 8 或以上。
  • Maven:用于管理 Java 项目和依赖项。
步骤
  1. 创建一个新的 Maven 项目并添加以下依赖项:
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.25</version>
</dependency>
<dependency>
  <groupId>log4j</groupId>
  <artifactId>log4j</artifactId>
  <version>1.2.17</version>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.23</version>
</dependency>
  1. 在 src/main/resources 目录下创建一个名为 log4j.properties 的文件,并添加以下配置:
log4j.rootLogger=DEBUG, console, file

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=[%p] %d (%F:%L) - %m%n

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=example.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.conversionPattern=[%p] %d (%F:%L) - %m%n

这些配置定义了:

  • 使用控制台、文件两个 Appender 来输出日志。
  • 控制台 Appender 输出格式为日志级别、日期、文件名和行号、日志消息。
  • 文件 Appender 将日志写入文件中,文件名为 example.log,文件大小为 5MB,最多保留 2 个备份文件,输出格式与控制台 Appender 相同。
  1. 创建一个名为 Example.java 的类,并添加以下代码:
import java.sql.*;

import org.apache.log4j.Logger;

public class Example {
  private static final Logger logger = Logger.getLogger(Example.class.getName());

  public static void main(String[] args) {
    String url = "jdbc:mysql://localhost/test?useSSL=false";
    String user = "root";
    String password = "password";
    Connection conn = null;

    try {
      Class.forName("com.mysql.jdbc.Driver");
      logger.info("JDBC driver loaded");

      conn = DriverManager.getConnection(url, user, password);
      logger.info("Database connected");

      // Do some work ...

      conn.close();
      logger.info("Database connection closed");
    } catch (SQLException e) {
      logger.error("Failed to connect to database", e);
    } catch (ClassNotFoundException e) {
      logger.error("JDBC driver not found", e);
    }
  }
}

这个类完成以下操作:

  • 加载 JDBC 驱动程序。
  • 连接到 MySQL 数据库。
  • 执行一些工作(在这里不做示范)。
  • 关闭数据库连接。
  • 如果连接失败,则记录错误。
  1. 运行 Example 类,观察控制台和 example.log 文件中的输出。
mvn exec:java -Dexec.mainClass="Example"

你会看到如下输出:

[INFO] Scanning for projects...
[INFO] 
[INFO] -------------------------< com.example:log4j-database-logging >--------------------------
[INFO] Building log4j-database-logging 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- exec-maven-plugin:1.6.0:java (default-cli) @ log4j-database-logging ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  2.082 s
[INFO] Finished at: 2021-07-28T16:45:11+08:00
[INFO] ------------------------------------------------------------------------

[INFO] [2021-07-28 16:45:13,252 (Example.java:15)] JDBC driver loaded
[INFO] [2021-07-28 16:45:13,255 (Example.java:18)] Database connected
[INFO] [2021-07-28 16:45:13,301 (Example.java:24)] Database connection closed
总结

Log4j 是 Java 应用程序中常用的日志工具。本文以 log4j 记录数据库登录事件为例,演示了如何使用 log4j、JDBC 连接到 MySQL 数据库,并记录相应事件。

我们希望本文可以帮助你更好地理解 log4j 和 JDBC,并在你的应用程序中更好地记录日志。如果你有任何问题或疑问,欢迎在下方评论区留言。