欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

Log4J写入到数据库中

程序员文章站 2022-05-02 20:00:45
...

在一些日常项目中需要将log日志输出到数据库中,然后进行分析,这对于log4J来说是易如反掌的,下面我们就配置将log日志输出到数据库中。 在开始项目之前需要将mysql的驱动jar包加入到当前的项目中,然后在所使用的数据库中建立test数据库,并建立log表,建表

在一些日常项目中需要将log日志输出到数据库中,然后进行分析,这对于log4J来说是易如反掌的,下面我们就配置将log日志输出到数据库中。

在开始项目之前需要将mysql的驱动jar包加入到当前的项目中,然后在所使用的数据库中建立test数据库,并建立log表,建表语句如下:

CREATE TABLE `log4j` (
`logId` int(11) NOT NULL AUTO_INCREMENT,
`createDate` varchar(45) DEFAULT NULL,
`thread` varchar(45) DEFAULT NULL,
`level` varchar(45) DEFAULT NULL,
`class` varchar(150) DEFAULT NULL,
`message` varchar(245) DEFAULT NULL,
PRIMARY KEY (`logId`)
) ENGINE=InnoDB AUTO_INCREMENT=394 DEFAULT CHARSET=utf8


log4j.properties信息如下:

#log4j.rootCategory=INFO,A3
log4j.rootCategory=INFO,A3
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss,SSS}%m%n

log4j.logger.java.sql.Connection=debug
log4j.logger.java.sql.Statement=debug
log4j.logger.java.sql.PreparedStatement=debug,stdout,logfile,A3


#定义A3输出到数据库
log4j.appender.A3=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.A3.URL=jdbc:mysql://18.8.10.104:3306/test
log4j.appender.A3.driver=com.mysql.jdbc.Driver
log4j.appender.A3.user=root
log4j.appender.A3.password=bistest1
#定义A3的布局和执行的SQL语句
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
log4j.appender.A3.layout.ConversionPattern=INSERT INTO log4j(createDate,thread,level,class,message) values(\'%d\',\'%t\',\'%-5p\',\'%c\',\'%m\')


测试代码如下:

public class Log4JTest {
Logger logger = Logger.getLogger(Log4JTest.class);
public Log4JTest() {
logger.warn("yes i do");
}
public static void main(String[] args) {
Logger logger = Logger.getLogger(Log4JTest.class);
System.out.println(System.getProperty("user.dir"));
PropertyConfigurator.configure("src/log4j.properties");
logger.debug("Here is DEBUG messgae");
logger.info("Here is INFO message");
logger.warn("Here is WARN message");
logger.error("Here is ERROR message");
logger.fatal("Here is FATAL message");
}
}

当执行测试代码时,你将发现log日志信息被写入到了数据库中

备注:本例使用的数据库为mysql 5.1、如果使用其他类型的数据库,请按照具体的数据库修改驱动信息以及其他相关信息

本例不再详细讲解,其中的参数信息请参见我的另一篇文章:http://blog.csdn.net/liyong635/article/details/13988209