log4j记录日志到数据库

一、数据库表

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("登录系统成功");

 
 

参考:

    https://www.cnblogs.com/ywlaker/p/6124067.html

    https://wiki.jikexueyuan.com/project/log4j/overview.html

    http://tech.lede.com/2017/06/30/rd/server/loggingHabit/


猜你喜欢

转载自blog.csdn.net/u012661496/article/details/80670115