第三百零八节 Log4j教程 - Log4j日志到数据库

Log4j教程 - Log4j日志到数据库

我们可以使用log4j API通过使用org.apache.log4j.jdbc.JDBCAppender对象将信息记录到数据库中。

下表列出了JDBCAppender的配置属性。

属性 描述
bufferSize 设置缓冲区大小。默认大小为1。
driver JDBC驱动程序类。默认为sun.jdbc.odbc.JdbcOdbcDriver。
layout 设置布局。默认是org.apache.log4j.PatternLayout。
password 设置数据库密码。
sql 指定用于每个日志记录请求的SQL语句。
URL 设置JDBC URL
user 设置数据库用户名

例子

首先,创建一个表来存储日志信息。

复制代码
CREATE TABLE LOGS
   (USER_ID VARCHAR(20) NOT NULL,
    DATED   DATE NOT NULL,
    LOGGER  VARCHAR(50) NOT NULL,
    LEVEL   VARCHAR(10) NOT NULL,
    MESSAGE VARCHAR(1000) NOT NULL
   );

然后,为JDBCAppender创建配置文件log4j.properties,该文件控制如何连接到数据库以及如何将日志消息存储到LOGS表。

复制代码
# Define the root logger with appender file
log4j.rootLogger = DEBUG, DB

# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender

# Set JDBC URL
log4j.appender.DB.URL=jdbc:mysql://localhost/Your_Database_Name

# Set Database Driver
log4j.appender.DB.driver=com.mysql.jdbc.Driver

# Set database user name and password
log4j.appender.DB.user=your_user_name
log4j.appender.DB.password=your_password

# Set the SQL statement to be executed.
log4j.appender.DB.sql=INSERT INTO LOGS 
                      VALUES("%x","%d","%C","%p","%m")

# Define the layout for file appender
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

以下代码显示如何将信息记录到数据库中。

复制代码
import org.apache.log4j.Logger;
import java.sql.*;
import java.io.*;
import java.util.*;

public class Main{
  static Logger log = Logger.getLogger(Main.class.getName());

  public static void main(String[] args)
                throws IOException,SQLException{

     log.debug("Debug");
     log.info("Info");
  }
}
相关推荐
驰骋工作流4 小时前
流程引擎BPM设计之:流程消息
java·工作流引擎·bpm·jflow·ccflow
Cloud云卷云舒4 小时前
云卷云舒:HaishanDB的AI原生能力主要应用场景
数据库·人工智能·ai-native·haishandb·移动云长期记忆
时间的拾荒人4 小时前
MySQL 视图详解
android·数据库·mysql
dogstarhuang4 小时前
从 0 到 1 搭建可收费的 API 开放平台(实战)
java·架构·api
qq_366086225 小时前
sql 查询中关于 null 值判断的问题
数据库·sql
测试修炼手册5 小时前
[测试技术] JUnit 6 入门与实战:断言、参数化与 Mockito
数据库·junit·sqlserver
VortMall5 小时前
『平台去经营化』平台治理能力全新重构|VortMall微服务商城系统v1.3.10
java·大数据·微服务·商城系统·开源商城·vortmall·去经营化
Echo缘5 小时前
嵌入式系统C语言资源分类与内存分布分析
c语言·开发语言
吴声子夜歌5 小时前
Redis 3.x——集群故障转移
java·数据库·redis·集群
名不经传的养虾人5 小时前
从0到1:企业级AI项目迭代日记 Vol.71|系统显示正常,但实际上什么都没发生
数据库·人工智能·ai编程·ai工作流·企业ai