数据变更审计(DataChangeInfo / 数据操作日志)
通过 IChameleonDbContext 执行的每次写操作(新增 / 更新 / 删除)都会自动产生一条数据变更审计日志(又称"数据操作日志 / 变更记录 / 修改前后值"),记录变更前后的完整数据。使用方无需编写任何审计代码。
概述
审计机制分两层:
- 组件层:
Chameleon.Database内部维护"变更日志管道",每次写操作成功后生成DataChangeInfo(含变更前后快照),通过ChameleonDbContextOptions的回调交给宿主 - 平台层:宿主(ChameleonSDK 注册)将变更日志写入待处理表
system_logdataoperationpending,由平台后续消费为完整的数据操作日志
与相邻概念的边界:对象审计日志是对象配置中可视化的审计开关与查询界面;本文档描述的是 DbContext 写操作自动产生的底层变更记录,两者面向同一份数据变更事实。
记录内容
每条变更日志包含:
| 项 | 说明 |
|---|---|
| 对象编码 | metaobjectcode,数据所属对象 |
| 动作 | action:Add / Update / Delete |
| 变更前 | before(JSON),更新/删除时的原数据快照 |
| 变更后 | after(JSON),新增/更新后的数据 |
| 数据 ID | dataid,被操作记录的 _id |
| 操作时间 | actiontime / createdtime(UTC) |
| 组织 | organization,来自当前上下文 |
更新操作执行前,组件会先查出原数据作为 before 快照,因此更新是有开销的读后写。
监控范围
平台默认只监控非 system_ 前缀的业务表;system_ 前缀的系统表中仅 system_userinformation 在白名单内。系统表自身的变更不产生此类审计日志。