本文未写拦截器 , 利用session 将信息存到 MDC中
log4j.properties 配置文件
log4j.rootLogger = DEBUG, DB
log4j.rootLogger=INFO,db语法为:log4j.rootLogger = [ level ] , appenderName1, appenderName2, …
level : 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName:就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。
例如:log4j.rootLogger=info,A1,B2,C3 配置了3个输出地方,这个名字可以任意(如上面的db),但必须与我们在后面进行的设置名字对应;
log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender
/* 配置数据库连接池 */
log4j.appender.DB.driver=com.mysql.jdbc.Driver
/* 加载MySQL 驱动*/
log4j.appender.DB.URL=jdbc:mysql://localhost:3306/space_custom?serverTimezone=Asia/Shanghai&characterEncoding=UTF-8&useUnicode=true&useSSL=false
/* 数据库 URL*/
log4j.appender.DB.user=root
/* 数据库链接名 */
log4j.appender.DB.password=root
/* 数据库密码 */
log4j.appender.DB.sql=insert into es_sys_log (user_login_id,message,log_level,detial,gmt_create,gmt_modified) values ('%X{user_login_id}','%M','%p','%m','%d{yyyy-MM-dd HH:mm:ss}','%d{yyyy-MM-dd HH:mm:ss}')
/* SQL 语句 */
log4j.appender.DB.layout=org.apache.log4j.PatternLayout
/* 提供 %X %p %m ... 等方法*/
Class 文件
public class SystemtLogger { //调试logger //日志 sys protected static Logger sysLogger = Logger.getLogger(SystemtLogger.class); /** * 日志 -> sysLog * @param obj */ public static void sysInfo(Object obj){ sysLogger.info(obj); } }
记录登录事件
public AjaxResponse userLogin(String userId, String pwd) { / * do something about login */
MDC.put("user_login_id","存放用户的id"); SystemtLogger.sysInfo("测试一下! 我记录的是登陆!");
return ajaxResponse;
}
SQL 文件 :
DROP TABLE IF EXISTS `es_sys_log`;
CREATE TABLE `es_sys_log` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键,自增列',
`user_login_id` bigint(20) DEFAULT NULL COMMENT '生成日志的用户,关联账号表',
`message` varchar(255) DEFAULT NULL COMMENT '日志信息',
`log_level` varchar(20) DEFAULT NULL COMMENT '日志级别',
`detial` varchar(1024) DEFAULT NULL COMMENT '日志详情',
`gmt_create` datetime DEFAULT NULL COMMENT '记录创建时间',
`gmt_modified` datetime DEFAULT NULL COMMENT '记录修改时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
运行结果: