首页   >   代码编程

log4j使用之JDBCAppender教程

前面几篇文章,已经将常用的日志记录方式讲述完毕,但仅仅用log文件来记录是不够的,有丢失的风险不说,而且还无法做到灵活分析,按照我们前面配置的日志打印规则,如果想要对log进行分析,就需要将log文件读出来进行解析,利用正则匹配找到我们想要的数据才可以进行分析。

log4j已经替我们考虑到了这一点,提供了很多的appender来解决这个问题,如:数据库、邮件、网络传输,今天就来看一下可以将日志写入到数据库的JDBCAppender

直接来看配置文件:log4j.properties

# 配置根logger,如果下面没有自定义logger,那么项目中的日志就都是debug级别,输出到console
log4j.rootLogger=DEBUG,console,database

# 屏蔽框架日志,只有报错的时候才放出来,优先级高于rootLogger
log4j.logger.org.springframework=ERROR
log4j.logger.org.apache.ibatis=ERROR
log4j.logger.org.mybatis.spring=ERROR
log4j.logger.com.mchange=ERROR

# 自定义包路径中的日志等级,直接写一个level即可,appender可选择,如果没写就默认使用rootLogger中配置的console
log4j.logger.com.ssm=DEBUG

# 打印出jdbc的日志
log4j.appender.java.sql.ResultSet=DEBUG
log4j.appender.java.sql.Connection=DEBUG
log4j.appender.java.sql.Statement=DEBUG
log4j.appender.java.sql.PreparedStatement=DEBUG

# 控制台(console)
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Threshold=DEBUG
log4j.appender.console.ImmediateFlush=true
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n

# 应用于数据库
log4j.appender.database=org.apache.log4j.jdbc.JDBCAppender
#数据库地址
log4j.appender.database.URL=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=true
#链接驱动
log4j.appender.database.driver=com.mysql.jdbc.Driver
#数据库账号
log4j.appender.database.user=test
#数据库密码
log4j.appender.database.password=111111
#插入日志的sql语句,插入的内容同样可以使用自定义格式
log4j.appender.database.sql=INSERT INTO log4j (message) VALUES('%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n')
#选择输出方式
#log4j.appender.database.layout=org.apache.log4j.PatternLayout
#下面这一行可以省略了,因为日志直接输出到数据库中了,配了也是白配
#配置日志输出格式
#log4j.appender.database.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%5p] - %c - %m%n

跟我们平常使用jdbc一样,同样也需要url、driver、user、password这些配置,这些就不再多解释了,能插入数据库的关键就在于sql参数,它可以让我们配置一条insert语句,在输出日志的时候,log4j会来调用执行这条sql,此时就可以将日志插入到数据库中。

日志表结构:

create table log4j
(
	id         int(10)     primary key auto_increment,
	message  varchar(1000) default null comment '日志内容'
) engine = innodb auto_increment = 1 default charset = utf8mb4 comment '日志表';

运行的效果:

log4j使用之JDBCAppender教程

上面是我去数据库中截的图,格式都是跟console控制台保持一致的,由于我只是做演示,所以并没有做很细粒度的存储,全部日志都放到了一个message字段中,大家如果需要做分析统计,建议还是多弄几个字段。

QQ群: 686430774  /  718410762

站长Q: 1347384268

如果文章有帮到你,可以考虑请博主喝杯咖啡!

分享到:

欢迎分享本文,转载请注明出处!

作者:不忘初心

发布时间:2019-05-14

永久地址:https://www.jiweichengzhu.com/article/99ac024d0c804b718925c5a22844aebd

评论