Log4j日志写入数据库

时间:2022-05-10 21:55:46

 第一步:建立一个存放日志的表

Log4j日志写入数据库

 

 

 

第二步:有log4j的相关jar文件

 

 

第三步:在项目中配置log4j配置文件。

Log4j日志写入数据库

 

 

第四步:写一个过滤器,配置到web.xml中

Log4j日志写入数据库

 

配置到web.xml中

Log4j日志写入数据库

 

 

 

第五步:在任何地方都可以用MDC.put来存值,输出到数据库中。

Log4j日志写入数据库

 

 

 

log4j还可指定,只有那个包的信息才能输出到数据库,非常的灵活。

指定不同包输出不同级别的日志方法如下:

Log4j日志写入数据库

配置案例如下:

log4j.rootLogger=debug, console
#指定controller包下输出eroor的级别,输出到DB,也就是输出到数据库
log4j.logger.com.imarce.student.recruit.web.controller=ERROR,DB

###Console ###
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d %p[%C:%L]- %m%n

        
# Define the DB appender
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DB.URL=jdbc:mysql://192.168.0.202/stu_mis_v2?useUnicode=true&characterEncoding=UTF-8
log4j.appender.DB.driver=com.mysql.jdbc.Driver
log4j.appender.DB.user=drp
log4j.appender.DB.password=drp2016
log4j.appender.DB.Threshold=ERROR
log4j.appender.DB.sql=INSERT INTO mis_log(userId,userName,userPosition,opType,opIp,opTime,opObject,objectId,logState,opDetail,phonea)VALUES('%X{userId}','%X{userName}','%X{userPosition}','%X{opType}','%X{opIp}','%d{yyyy-MM-dd HH:mm:ss}','%X{opObject}','%X{objectId}','%X{logState}','%m','%X{phonea}')
log4j.appender.DB.layout=org.apache.log4j.PatternLayout

  

 

 

 

写入数据库的时候,userId是int类型的,发现会提示类型转换错误,我只能用varchar去接收

他了,看来%X{}  是输出String类型,int类型的是什么呢?

 

 

 注意点

Log4j日志写入数据库