操作日志的记录是基于行为扩展的
##配置
日志记录是支持自动水平分表的,`max_rows` 配置项用于配置每个表记录的最大日志数,每个表大于此记录数会自动分表,一旦配置请不要再修改,否则可能发生一些不可预料的意外
```
return [
'max_rows' => 2000000, // 单表最大纪录值
'not_record_controller' => ['Index'], // 不记录的控制器
'not_record_map' => ['AdminGroup/index'], // 不记录的节点图
'web_log_table' => 'web_log', // 操作日志存储表
];
```
>[info] `not_record_controller` 请严格按照 `\think\Request::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
##行为配置
开启行为配置后就自动记录了,查看记录的日志访问 `WebLog\index` 即可
```
return [
'module_init' => [
'app\\admin\\behavior\\WebLog',
],
];
```
>[info] 如果改动请修改 `app\admin\behavior\WebLog` 和 `\extend\WebLog.php` 两个文件
- 概要
- 开始使用
- 写在前面
- 目录结构
- 模板主题支持
- 前置方法before支持
- 数据返回
- 异常接管
- Rbac 权限管理
- 开始使用
- 用户管理
- 分组管理
- 节点管理
- 角色管理
- 使用流程
- 其他
- 代码自动生成 v1.2
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 示例三 - 从数据表生成
- 示例四 - 指定生成的文件
- 示例五 - 命令行模式
- 示例六 - 模拟命令行模式
- 代码自动生成
- 示例一 - 一级控制器
- 示例二 - 多级控制器
- 控制器
- 公共控制器
- traits 多继承 Controller
- 公开不授权控制器
- 其他控制器
- 标签扩展
- 模板
- 网站操作日志
- 节点图
- 行为驱动
- 其他后端方法
- Excel一键导出
- Excel一键导入
- 文件下载
- 邮件发送
- 七牛文件上传
- id加密
- 前端
- ajax请求
- 表单校验
- 丰富弹层
- 异步操作
- 表格溢出
- 随机字符串
- 自动面包屑导航
- 动态加载文件
- 文件上传
- Tab 切换
- 图片预览
- 二维码生成
- 日历组件
- 升级指导
- 更新日志
- FAQ