操作日志的记录是基于行为扩展的
##配置
日志记录是支持自动水平分表的,`max_rows` 配置项用于配置每个表记录的最大日志数,每个表大于此记录数会自动分表,一旦配置请不要再修改,否则可能发生一些不可预料的意外
```
return [
'max_rows'=> 2000000, // 单表最大纪录值
'not_record_controller' => ['Index'], // 不记录的控制器
'not_record_map' => ['AdminGroup/index'], // 不记录的节点图
'web_log_table' => 'web_log', // 操作日志存储表
];
```
>[info] `not_record_controller` 请严格按照 `thinkRequest::instance()->controller()` 方法返回的字符串格式来配置
>`not_record_map` 请严格按照节点图的格式来配置
##初始化
###建立 web_log 单表
表名后缀必须是 `_001`,否则自动水平分表会出现错误
```
CREATE TABLE `tp_web_log_001` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '日志主键',
`uid` smallint(5) unsigned NOT NULL COMMENT '用户id',
`ip` char(15) NOT NULL COMMENT '访客ip',
`location` varchar(255) NOT NULL COMMENT '访客地址',
`os` varchar(255) NOT NULL COMMENT '操作系统',
`browser` varchar(255) NOT NULL COMMENT '浏览器',
`url` varchar(255) NOT NULL COMMENT 'url',
`module` char(6) NOT NULL COMMENT '模块',
`map` varchar(255) NOT NULL COMMENT '节点图',
`is_ajax` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否是ajax请求',
`data` text NOT NULL COMMENT '请求的param数据,serialize后的',
`otime` int(10) unsigned NOT NULL COMMENT '操作时间',
PRIMARY KEY (`id`),
KEY `uid` (`uid`),
KEY `ip` (`ip`),
KEY `map` (`map`),
KEY `otime` (`otime`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='网站日志';
```
>[info] 一定要保证表引擎是 MyISAM ,不然无法建立联合表,自动水平分表用到了 MyISAM 的 MERGE 引擎
###建立 web_log 联合表
```
CREATE TABLE `tp_web_log_all` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '日志主键',
`uid` smallint(5) unsigned NOT NULL COMMENT '用户id',
`ip` char(15) NOT NULL COMMENT '访客ip',
`location` varchar(255) NOT NULL COMMENT '访客地址',
`os` varchar(255) NOT NULL COMMENT '操作系统',
`browser` varchar(255) NOT NULL COMMENT '浏览器',
`url` varchar(255) NOT NULL COMMENT 'url',
`module` char(6) NOT NULL COMMENT '模块',
`map` varchar(255) NOT NULL COMMENT '节点图',
`is_ajax` tinyint(1) unsigned NOT NULL DEFAULT '0' COMMENT '是否是ajax请求',
`data` text NOT NULL COMMENT '请求的param数据,serialize后的',
`otime` int(10) unsigned NOT NULL COMMENT '操作时间',
KEY `id` (`id`),
KEY `uid` (`uid`),
KEY `ip` (`ip`),
KEY `map` (`map`),
KEY `otime` (`otime`)
) ENGINE=MRG_MyISAM DEFAULT CHARSET=utf8 INSERT_METHOD=LAST UNIOn=(`tp_web_log_001`);
```
>[info] 表引擎是 MERGE
##行为配置
开启行为配置后就自动记录了,查看记录的日志访问 `WebLogindex` 即可
```
return [
'module_init' => [
'app\admin\behavior\WebLog',
],
];
```
>[info] 如果改动请修改 `appadminbehaviorWebLog` 和 `extendWebLog.php` 两个文件