log4j记录日志到数据库

匿名 (未验证) 提交于 2019-12-03 00:27:02

一、数据库表

CREATE TABLE `admin_sys_log` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `uid` bigint(20) DEFAULT NULL COMMENT '操作者id',   `username` varchar(255) DEFAULT '' COMMENT '操作者用户名',   `client_ip` char(16) DEFAULT NULL COMMENT '操作者ip',   `operate_module` varchar(255) DEFAULT '' COMMENT '类名,比如:AdminUserController',   `operate_module_name` varchar(255) DEFAULT '' COMMENT '自定义内容,比如:用户登录',   `operate_type` varchar(255) DEFAULT '' COMMENT '方法名',   `operate_time` varchar(255) DEFAULT '' COMMENT '操作时间',   `operate_content` varchar(255) DEFAULT '' COMMENT '操作内容',   `operate_result` varchar(255) DEFAULT '' COMMENT '操作结果',   `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',    `is_deleted` tinyint(1) unsigned DEFAULT '0' COMMENT '1:删除,0:未删除',   `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='管理员系统日志'; 

二、log4j配置文件

log4j.rootLogger=debug,Console  log4j.logger.dbLogger=debug,DB  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=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n  # Define the root logger with appender file log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.File=${log}/log.out log4j.appender.FILE.ImmediateFlush=true log4j.appender.FILE.Threshold=debug log4j.appender.FILE.Append=true log4j.appender.FILE.DatePattern='.' yyyy-MM-dd-a log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%m%n  # Define the root logger with appender file log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender log4j.appender.DB.encoding=UTF-8 #定义字符集防止中文乱码 #log4j.appender.dblog.Threshold=info #记录的最低日志级别。高于这个的就会全部会被记录。 #log4j.appender.dblog.BufferSize=10 #日志缓存;这个配置可以提交性能;累计操作N(10)个记录一次性写入数据库 log4j.appender.DB.URL=jdbc:mysql://127.0.0.1:3306/数据库名 log4j.appender.DB.driver=com.mysql.jdbc.Driver log4j.appender.DB.user=数据库用户名 log4j.appender.DB.password=数据库密码 log4j.appender.DB.sql=INSERT INTO admin_sys_log (uid,username,client_ip,operate_module,operate_module_name,operate_type,operate_time,operate_content,operate_result) VALUES ('%X{uid}','%X{username}','%X{clientIp}','%C{1}','%X{operateModuleName}','%M','%d{yyyy-MM-dd HHmmss}','%m','%X{operateResult}') log4j.appender.DB.layout=org.apache.log4j.PatternLayout log4j.appender.DB.layout.ConversionPattern=-[%d{yyyy-MM-dd HHmmss}]-[%C{1}]-[%M]-%X{clientIp}-%X{operateModuleName}-%X{username}-%X{operateContent}-%X{operateResult}-%m-%n

三、使用

MDC.put("clientIp",IpUtil.getIpAddr(request)); DB_LOGGER.info("登录系统成功");

 

参考:




易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!