企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Log4j `JDBCAppender` – 在数据库中创建日志 > 原文: [https://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/](https://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/) [Log4j](//howtodoinjava.com/category/frameworks/log4j/ "log4j tutorials") 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。 Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以创建简单的日志文件,html 日志文件或 xml 日志文件。 它还使用 mysql 语句将日志语句插入数据库。 这篇文章,我将展示用于配置 log4j 以在数据库表中生成日志的示例代码。 **步骤 1)创建一个 Maven Java 项目并更新 log4j 依赖项** 请遵循与[**使用 maven 配置 log4j**](//howtodoinjava.com/log4j/how-to-configure-log4j-using-maven/ "How to configure log4j using maven") 有关的步骤。 **步骤 2)在`log4j.properties`文件中配置`JDBCAppender`** [`JDBCAppender`](https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/jdbc/JDBCAppender.html "JDBCAppender")提供了用于将日志事件发送到数据库表的机制。 每个追加调用将添加到`ArrayList`缓冲区。 当缓冲区已满时,每个日志事件都将放置在 sql 语句(可配置)中并执行。 **缓冲区大小**, **DB URL**,**用户**和**密码**是标准 log4j 方式中的可配置选项。 **警告**:此版本的`JDBCAppender`将来很可能会完全替换。 此外,它不会记录异常。 ```java # Define the root logger with file appender log4j.rootLogger = DEBUG, sql # Define the file appender log4j.appender.sql=org.apache.log4j.jdbc.JDBCAppender log4j.appender.sql.URL=jdbc:mysql://localhost/test # Set Database Driver log4j.appender.sql.driver=com.mysql.jdbc.Driver # Set database user name and password log4j.appender.sql.user=root log4j.appender.sql.password=password # Set the SQL statement to be executed. log4j.appender.sql.sql=INSERT INTO LOGS VALUES ('%x', now() ,'%C','%p','%m') # Define the xml layout for file appender log4j.appender.sql.layout=org.apache.log4j.PatternLayout ``` **步骤 3)在数据库中创建表并测试应用** 在模式测试中,创建数据库表`LOGS`。 ```java CREATE TABLE LOGS ( USER_ID VARCHAR(20) NOT NULL, DATED DATETIME NOT NULL, LOGGER VARCHAR(50) NOT NULL, LEVEL VARCHAR(10) NOT NULL, MESSAGE VARCHAR(1000) NOT NULL ); ``` 现在,使用`PropertyConfigurator`配置`log4j.properties`文件并调用一些日志事件。 ```java package com.howtodoinjava; import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator; public class Log4jJDBCExample { static Logger log = Logger.getLogger(Log4jJDBCExample.class); public static void main(String[] args) { PropertyConfigurator.configure("log4j.properties"); log.debug("Sample debug message"); log.info("Sample info message"); log.error("Sample error message"); log.fatal("Sample fatal message"); } } ``` 日志语句将使用 sql 语句插入数据库中。 ![log4j-jdbc-example](https://img.kancloud.cn/e0/db/e0db867ff54123afaaeef5ccbbebcf27_687x108.png) 让我知道是否有任何问题。 **祝您学习愉快!**