Log4j JDBCAppender – 在数据库中创建日志

Log4j JDBCAppender – 在数据库中创建日志

原文: https://howtodoinjava.com/log4j/how-to-create-logs-in-database-using-jdbcappender-in-log4j/

Log4j 是一个简单而灵活的日志记录框架。 日志记录为开发人员提供了有关应用故障的详细上下文。 使用 log4j 可以在运行时启用日志记录,而无需修改应用二进制文件。 log4j 包的设计目的是使这些语句可以保留在出厂代码中,而不会造成高昂的性能成本。

Log4j 带有多个选项来格式化框架创建的日志文件。 它也可以创建简单的日志文件,html 日志文件或 xml 日志文件。 它还使用 mysql 语句将日志语句插入数据库。

这篇文章,我将展示用于配置 log4j 以在数据库表中生成日志的示例代码。

步骤 1)创建一个 Maven Java 项目并更新 log4j 依赖项

请遵循与使用 maven 配置 log4j 有关的步骤。

步骤 2)在log4j.properties文件中配置JDBCAppender

JDBCAppender提供了用于将日志事件发送到数据库表的机制。 每个追加调用将添加到ArrayList缓冲区。 当缓冲区已满时,每个日志事件都将放置在 sql 语句(可配置)中并执行。 缓冲区大小DB URL用户密码是标准 log4j 方式中的可配置选项。

警告:此版本的JDBCAppender将来很可能会完全替换。 此外,它不会记录异常。

# 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

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文件并调用一些日志事件。

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

让我知道是否有任何问题。

祝您学习愉快!