操作日志
谁在什么时间、对哪条记录做了什么动作,系统都记得清清楚楚,事后翻账有据可查——但日志记的是"谁改了哪条",不是"具体改成了什么数值",这点要先弄清楚。
日志记录什么
系统在后台盯着每一次写操作,每一条日志包含五个要素:时间(精确到秒)、操作人(账号显示名;单机免登录模式下会自动带上"(单机)"后缀,跟真实登录的同名账号区分开)、动作(新增、修改、删除……)、模块(例如村民花名册、低保户;不属于某个具体模块的系统级操作这一列是空的)、内容(一句话摘要,最长 200 字,列表里这一列末尾还会带"(记录 #123)"标出是哪条记录)。
编辑一条记录时,日志的"内容"摘要通常只是这条记录的姓名(方便你认出是谁),不会列出到底改了哪个字段、从什么值改成了什么值。系统没有字段级对比功能。想知道某次编辑改动前的具体数值,只能靠对照编辑发生之前的一份备份(见下面"排查问题的实战例子")。
普通的查看、翻页、筛选这种"只看不动"的行为不会写日志。真正改变数据库内容的操作(新增、修改、删除、导入、恢复、登录失败等)才会留痕,而且覆盖面很广——不止模块数据,证明模板、菜单分组、仪表盘、党费规则、模块关联、待办任务的增删改也都会记一条。
入口: 系统管理 → 操作日志
- 用 admin 登录左侧"操作日志"这个菜单项只有管理员账号能看到,普通用户登录后菜单里根本没有这一项。
- 左侧菜单找"系统管理"展开后点"操作日志",主区域列出最近的日志,按时间倒序,最新的在最上面。
- 顶部是筛选条一个"全部动作"下拉、一个关键词输入框,加"查询""刷新"两个按钮,往下就是日志表格。
动作类型
系统里几乎每一个改变数据的操作都会留一条日志,动作五花八门,远不止十种。表格里的"动作"列用不同颜色的小标签区分:
| 标签颜色 | 常见动作 |
|---|---|
| 红色 | 删除、批量删除、彻底删除、删除模块 |
| 绿色 | 新增、导入、恢复、新建模块 |
| 橙色 | 恢复备份 |
| 灰色 | 其余所有动作,例如修改、批量编辑、登录失败、开具证明等 |
顶部"全部动作"筛选下拉只列出十种最常用的:新增、修改、删除、批量删除、导入、恢复、彻底删除、新建模块、删除模块、恢复备份。除此之外还有很多动作照样会写进日志、照样能在列表里看到,只是下拉里选不到它们,比如登录失败、批量编辑、开具证明、新建/删除证明模板、新建/删除任务、新建/删除模块关联、更新党费规则等——想找这些,只能靠关键词搜索或者翻页肉眼找。
按动作类型筛
"全部动作"下拉是单选,不支持多选。想同时看"删除"和"批量删除"这两类,得挨个换着筛,看不了合集。选完点"查询"生效,点下拉右边的小叉能清空恢复到"全部"。
按关键词筛
顶部的输入框写着"搜操作人 / 模块 / 内容",打字进去按回车或点"查询",会在操作人账号名、模块名、内容摘要这三个字段里做模糊匹配,命中任意一个就显示。常用场景:想查"张文书做过什么",搜他的账号名;想查"低保户这个台账被动过什么",搜"低保户"。
比如搜"登录失败"是搜不出东西的——登录失败这条日志记的是尝试登录的账号名和 IP,"登录失败"四个字不在被搜索的三个字段里。想看登录失败记录,只能把动作和关键词都留空,靠翻页和时间顺序肉眼找。另外关键词和动作筛选组合使用时是"与"关系,两个条件要同时满足。
分页
表格下方是分页,默认每页 50 条,右边下拉可以切到 100 / 200 / 500 / 1000 条一页。系统没有单独的时间区间选择器——列表本身就是按时间倒序排的,想缩小到某个时间段,只能靠动作和关键词先过滤,再配合"每页 1000 条"多翻几页手动定位。
日志保留多久
系统默认保留最近 10 万条日志。每写入 500 条,系统自动检查一次:若总量超过 10 万,就把最旧的那批物理删除,同时写一条动作叫 system_auto_purge 的系统记录说明清了多少条(这条记录不在"全部动作"下拉里,得翻页或搜索才能看到)。日常使用下攒到 10 万条通常要好几年,不用操心。
系统没有手动批量清理日志的入口,系统设置里也没有这项功能。日志只能靠上面的自动裁剪自然变少,管理员没有办法主动清空或删减。
日志不可篡改
日志页面没有"编辑"按钮,没有"删除"按钮,只有"查询"和"刷新",admin 也一样看不到任何能改动或清空日志的入口。想让某条记录消失,唯一途径是等它超过 10 万条被自动裁剪,你自己控制不了这个时机。
排查问题的实战例子
来一个真实场景:村会计早上打开低保户台账,发现李某某的低保金额从 300 变成了 500,自己没改过,怀疑被人动了。
- 登 admin 进操作日志左侧菜单"系统管理 → 操作日志"。
- 动作下拉选"修改"先把新增、删除这些跟这事无关的动作排除掉。
- 关键词框输入"李某某"日志内容摘要通常就是记录的姓名,能把范围收窄到跟这个人相关的修改。
- 对照"模块"列确认是"低保户"结果里如果还混着其他模块里同名的人,靠这一列区分开。
- 记下"操作人"和"时间"比如操作人
张文书,时间2026-06-19 16:42:15——这就是谁在什么时候动过这条记录,但日志本身不会告诉你金额具体是从 300 变成 500 的,系统不存旧值。 - 想确认改动前的具体数值,去"备份恢复"找那个时间点之前最近的一份自动或手动备份,下载下来。
.db是标准 SQLite 文件,可以用免费的 DB Browser for SQLite 之类的工具单独打开查看,不需要也不建议直接在生产库上做还原来核对一个数字。 - 找张文书核实是手误还是真有政策调整,他自己说了算。
- 需要改回来就回到低保户模块把金额改回 300这次修改也会留一条新日志,前因后果都齐了。
日志的价值在于"锁定是谁、什么时候动过",而不是"自动告诉你改了什么"——真要对账,日志 + 定期备份配合着用,才能把具体数值也查出来。