第一步:建立一个存放日志的表
第二步:有log4j的相关jar文件
第三步:在项目中配置log4j配置文件。
第四步:写一个过滤器,配置到web.xml中
配置到web.xml中
第五步:在任何地方都可以用MDC.put来存值,输出到数据库中。
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类型的是什么呢?
注意点