CMS后台操作日志记录,记录管理员所有操作

CMS后台操作日志记录的核心目标只有一句话:管理员在后台点了什么、改了什么、什么时候做的,都要留下可查询的记录。
本文按零基础运维视角,讲清准备条件、分步操作、避坑和验证方法,适合使用宝塔面板或LNMP环境搭建CMS的站长。

先确认你的CMS是否已有日志入口

动手前先做一次排查,避免重复造轮子。
登录CMS后台,按以下路径查找:

  • 常见路径:系统 → 操作日志、日志管理、安全审计
  • 若存在日志菜单,先点击测试,确认能否记录“登录、新增、修改、删除”四类动作
  • 若没有菜单或记录为空,再按本文手动补充日志表

判断条件:后台已有且能正常写入的,不需要重建表;
只有缺失或记录不全时,才进入下一步。

建立操作日志数据表

在宝塔面板打开 数据库,进入CMS所用数据库,执行下面的建表SQL。
字段覆盖“谁、何时、在哪、做了什么、结果如何”:

CREATE TABLE cms_admin_log (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  admin_id INT UNSIGNED NOT NULL,
  admin_name VARCHAR(50) NOT NULL,
  action VARCHAR(50) NOT NULL,
  module VARCHAR(50) NOT NULL,
  detail TEXT,
  ip VARCHAR(45),
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

表建好后,在宝塔 数据库 页面点击 phpMyAdmin,确认 cms_admin_log 表出现在列表中,字段类型与上面一致。

让CMS在关键操作时写入日志

以常见PHP类CMS为例,找到后台控制器入口文件,通常在 application/admin/controller/ 目录下。
在登录、新增、编辑、删除的公共方法中插入写日志逻辑:

$log = [
  'admin_id'   => session('admin_id'),
  'admin_name' => session('admin_name'),
  'action'     => 'edit',
  'module'     => 'article',
  'detail'     => json_encode($params, JSON_UNESCAPED_UNICODE),
  'ip'         => request()->ip(),
];
db('cms_admin_log')->insert($log);

关键点:

  • action 建议固定为 login、add、edit、delete 几类,方便后续筛选
  • detail 记录修改前后的关键字段,不要记录密码等敏感内容
  • 写日志代码放在业务操作成功之后,失败操作也建议记录,便于排查

验证方式:在后台修改一篇文章标题,刷新日志表,应看到一条 action=edit 的新记录。

日志查询与保留策略

日志写入后,还要能查、能清。
推荐在后台加一个日志列表页,按时间倒序展示,支持按管理员和操作类型筛选。

保留策略建议:

  • 常规站点保留90天,安全要求高的保留180天以上
  • 每天凌晨用计划任务清理过期日志,宝塔路径:计划任务 → 添加任务 → Shell脚本
  • 清理命令示例:DELETE FROM cms_admin_log WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

结论:日志只写不清理会拖慢数据库,定期归档比无限保留更稳妥。

常见坑位与排查

  • 中文乱码:建表和连接字符集统一用 utf8mb4
  • 日志没写入:检查写日志代码是否在 return 之前,以及数据库账号是否有 INSERT 权限
  • IP记录为 ::1:这是本机IPv6回环,线上环境一般正常
  • 日志表增长过快:检查是否把查询类操作也记了进去,查询不建议写入
  • 后台删除管理员后日志查不到:日志表不要设外键级联删除,保留历史记录

效果验证清单

完成配置后,按下面清单逐项确认:

  1. 登录后台,日志表新增一条 action=login 记录
  2. 新增一篇文章,日志表新增 action=add 记录
  3. 删除一条数据,日志表保留删除记录且 detail 可读
  4. 用不同管理员账号操作,admin_name 能正确区分
  5. 计划任务执行后,过期日志被清理

如果以上都能通过,说明CMS后台操作日志记录已经可以覆盖管理员所有操作,后续排查误操作或安全事件时就有据可查。

常见疑问

日志表放在CMS主库会不会影响性能?

中小流量站点通常没问题。
若写入频繁,可单独建日志库或改用文件日志,再定期导入分析。

能不能只记录删除操作?

可以,但不建议。
登录和修改同样重要,只记删除会丢失大量审计线索。

日志被管理员自己删了怎么办?

日志表权限应与CMS业务账号分离,后台不提供物理删除入口,清理只走计划任务。

分享到:
上一篇
CMS对接企业微信,表单提交推送消息提醒
下一篇
宝塔面板网站伪静态一键复制,迁移站点使用
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意