Log4j 的 JDBCAppender 配置

来自姬鸿昌的知识库
跳到导航 跳到搜索

https://www.bilibili.com/video/BV1iJ411H74S?p=16

建表

CREATE TABLE `log4j`.`log` (
  `log_id` INT NOT NULL AUTO_INCREMENT,
  `project_name` VARCHAR(255) NULL COMMENT '项目名',
  `create_date` VARCHAR(255) NULL COMMENT '创建时间',
  `level` VARCHAR(255) NULL COMMENT '优先级',
  `category` VARCHAR(255) NULL COMMENT '所在类的全名',
  `file_name` VARCHAR(255) NULL COMMENT '输出日志消息产生时所在的文件名称',
  `thread_name` VARCHAR(255) NULL COMMENT '日志事件的线程名',
  `line` VARCHAR(255) NULL COMMENT '行号',
  `all_category` VARCHAR(255) NULL COMMENT '日志事件的发生位置',
  `message` VARCHAR(4000) NULL COMMENT '输出代码中的指定的消息',
  PRIMARY KEY (`log_id`));

pom.xml 中加入依赖

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

log4j.properties

# 指定 RootLogger 顶级父元素默认配置信息
# 指定日志级别=trace,使用的 appender 为 console
log4j.rootLogger = trace,logDB


#mysql
log4j.appender.logDB = org.apache.log4j.jdbc.JDBCAppender
log4j.appender.logDB.layout = org.apache.log4j.PatternLayout
log4j.appender.logDB.driver = com.mysql.jdbc.Driver
log4j.appender.logDB.URL = jdbc:mysql://localhost:3306/log4j
log4j.appender.logDB.user = root
log4j.appender.logDB.password = 123456
log4j.appender.logDB.sql = INSERT INTO log ( project_name , create_date , level , category , file_name , thread_name , line , all_category , message ) \
VALUES ( 'log4j-demo', '%d{yyyy-MM-dd HH:mm:ss}', '%p', '%c', '%F', '%t', '%L', '%l', '%m')

注意

properties 里的 sql 太长了用“\”换行