先明确日志是用来做什么的
日志至少承担四种用途,而不同用途对字段的要求并不相同:故障排查需要请求链路信息,安全审计需要登录与权限变更信息,内部审计需要业务数据的变更前后值,监管检查需要能证明会计资料未被篡改。很多系统的日志只满足第一种,于是出了问题能定位到服务器,却定位不到人。
把用途先列清楚,再倒推需要记什么,比一上来就讨论「日志要不要开全量」有效得多。因为全量日志的真实代价不是磁盘空间,而是检索效率——一条关键线索淹没在几千万条无用记录里,和没有记录差不了太多。
四个分层:缺一层就有一类问题查不到
财务系统的日志应当按层分开采集与保存,而不是合成一锅。四个层次各有侧重,也各有各的采集方式。
| 日志层 | 记录什么 | 典型用途 | 最容易缺失的部分 |
|---|---|---|---|
| 应用操作日志 | 用户在业务界面上的动作:新增、修改、删除、审批、退回、导出、打印 | 还原业务操作过程,回答「谁改了什么」 | 导出与打印常被漏记,而这两类动作恰恰涉及数据外带 |
| 数据库审计日志 | 对关键表的增删改语句、执行账号、执行时间、影响行数 | 发现绕过应用直连数据库的修改 | 只开了常规日志,未记录实际执行的 SQL 与客户端来源 |
| 系统与安全日志 | 操作系统登录、账号与权限变更、服务启停、配置修改 | 识别越权运维与异常登录 | 账号权限变更只记结果不记前后值 |
| 接口与交换日志 | 与 OA、ERP、银行、税务等外部系统的调用记录、入参出参摘要、返回结果 | 定位跨系统数据不一致的源头 | 只记成功记录,失败与重试记录被丢弃 |
第四个分层容易被工程团队省略,但在实际排查中很关键。当业务部门说「单据在系统里是 12600,到 ERP 里变成 8600」时,如果接口日志里保留了每次调用的入参与出参摘要,通常十分钟内就能判断问题出在发送端、传输过程还是接收端;反之,就只能靠复现,而复现往往不可行。
字段清单:还原一笔单据的变更需要什么
下面这份清单是按「能不能还原一笔单据的完整变更历史」这个标准列出来的。缺其中任何一项,都会在某个具体问题上卡住。
| 字段 | 说明 | 缺失后的后果 |
|---|---|---|
| 发生时间 | 建议记录服务器时间并标明时区,精确到秒 | 多个系统日志时间不可比,无法拼接完整链路 |
| 操作人账号与姓名 | 账号用于唯一定位,姓名保留快照用于离职后追溯 | 人员离职后账号被回收,只剩一串无意义的编号 |
| 操作人角色与所属组织 | 记录操作当时所持有的角色,而非当前角色 | 事后角色调整会让权限判断失去依据 |
| 来源标识 | 客户端 IP、设备标识、会话号或请求号 | 无法区分是本人操作还是他人代操作 |
| 操作类型 | 新增、修改、删除、审批、退回、导出、打印、作废等具体动作 | 只有「访问」一种类型时,无法判断动作性质 |
| 操作对象 | 单据类型与单据号,落到具体业务对象而非数据库表 | 需要人工按时间反查业务单据,效率极低 |
| 变更前后值 | 按字段记录原值与新值,而非只记新值 | 无法回答「改了什么」,等于没有留痕 |
| 操作结果 | 成功或失败,失败时记录原因码 | 无法区分「尝试但未成功」与「确实执行了」 |
| 审批链快照 | 本次操作前后审批节点的变化 | 审批链变动原因无法还原 |
这份清单里有三项最常被省略:操作当时的角色、变更前后值、审批链快照。它们共同的特点是「记的时候嫌麻烦,用到的时候找不到」。建议在系统设计阶段就把这三项写进日志模型的必填字段,而不是留给后续版本补充——等到需要的时候再补,历史数据是补不回来的。
留存期限:三个口径不要混为一谈
日志留存多久,是这块内容里最容易被讲错的地方。实际情况是至少有三个不同的期限口径在同时起作用,混用会产生似是而非的结论。
- 第一个口径来自《中华人民共和国网络安全法》(2016 年 11 月 7 日通过,自 2017 年 6 月 1 日起施行)第二十一条第三项:网络运营者应当采取监测、记录网络运行状态、网络安全事件的技术措施,并按照规定留存相关的网络日志不少于六个月。这是网络运行类日志的最低留存要求
- 第二个口径来自等级保护测评。《信息安全技术 网络安全等级保护基本要求》(GB/T 22239—2019,2019 年 5 月 10 日发布、2019 年 12 月 1 日实施)在 8.1.4.3 安全审计中要求审计记录应包括事件的日期和时间、用户、事件类型、事件是否成功及其他与审计相关的信息,应对审计记录进行保护避免受到未预期的删除修改或覆盖,并明确「审计记录的留存时间应符合法律法规要求」
- 第三个口径来自会计档案管理。《会计档案管理办法》(财政部、国家档案局令第 79 号,自 2016 年 1 月 1 日起施行)附表规定,原始凭证、记账凭证、总账、明细账、日记账及其他辅助性账簿的保管期限为 30 年,年度财务会计报告永久保管,银行存款余额调节表、银行对账单、纳税申报表为 10 年
三者并不是互相替代的关系。网络运行类日志满足六个月是底线,但如果这类日志被用于证明某笔会计处理的过程,它承载的信息就与会计资料相关,保留期限应当参照会计档案的要求而不是六个月。实践中比较稳妥的安排是分级设置:安全类日志按不少于六个月、且覆盖等保测评所需的回溯窗口保存,与业务与会计处理直接相关的操作日志与接口日志,按所对应会计档案的保管期限保存。
防篡改的四条技术底线
日志能不能作为证据,取决于它自身是否可信。一份可以被管理员随意修改的日志,即使内容完整,证明力也很有限。《会计信息化工作规范》(财政部,财会〔2024〕11 号,2024 年 7 月 26 日印发,自 2025 年 1 月 1 日起施行)第十七条要求系统自动审核的规则「应当可查询、可校验、可追溯,其设立与变更应当履行审签程序,严格管理,留档备查」——这条逻辑同样适用于日志本身。
日志可信的四条底线
- 只追加:日志记录一经写入不得修改或删除,更正以新增一条更正记录的方式实现,界面不提供删除入口
- 可校验:关键日志按固定算法生成校验值并形成链条,任何一条被改动都能被发现,而不是只能靠人工比对
- 权限分离:查看日志的权限、运维系统的权限、维护业务的权限应当分开,避免同一人既操作系统又能改日志
- 异地留存:日志按日或按小时同步到本系统之外的存储介质,防止单点故障或被攻击时日志与本系统同时受影响
第三项在实践中阻力最大,因为运维便利性会下降。折中做法是把日志存储与业务数据库物理分离,运维人员可以重启应用、扩容存储,但没有删除日志的权限;确需清理日志时走独立的审批流程并留下审批记录。这样既不严重影响运维,又守住了底线。
从日志还原一笔单据的完整历史
有了字段和留存,还要回答一个操作性问题:真出事的时候,怎么用这批日志把过程还原出来。下面这套动作顺序适合作为标准化排查步骤,反过来也可以作为校验日志是否够用的测试用例。
- 先从业务单据号出发,在应用操作日志中检索该单据的全部记录,按时间排序形成基础时间线
- 把每个操作节点的操作人账号与当时角色提取出来,与审批链快照比对,确认每一步的审批人是否符合当时的授权关系与委托关系
- 针对金额、科目、辅助核算项这类关键字段,取变更前后值,还原每一次修改的具体内容
- 在接口日志中查找该单据与外部系统之间的调用记录,确认传出与接收的数据是否一致
- 在数据库审计日志中检查该单据相关表是否存在不经过应用的操作记录,这一项用于发现异常维护行为
- 把上述四份记录合并为一份带时间戳的过程说明,作为检查或审计的答复材料留存
第 5 步容易被忽略,但它是唯一能发现「绕过应用直接改库」的手段。只采集应用日志的系统,在有人直接用数据库工具改数时是完全无感的。
记账不可逆:日志之外还必须守住的规则
讨论日志时有一个容易被绕过的前提:会计处理本身不允许通过修改来实现更正。《会计软件基本功能和服务规范》(财政部,财会〔2024〕12 号,2024 年 7 月 29 日印发,自 2025 年 1 月 1 日起施行)第二十一条第三项要求会计软件「提供不可逆的记账功能,不得提供对已记账凭证的删除和插入功能,确保对同类已记账凭证的连续编号,不得提供对已记账凭证日期、币种、汇率、金额、科目、操作人等的修改功能」。
这条规则与日志是互补关系,不是重复关系。正因为不允许删除和修改已记账凭证,日志里才不会出现「已记账凭证被直接改掉」这种最难解释的记录;反过来,即使系统提供了不可逆记账,如果更正过程没有留痕,事后仍然说不清是谁发起、依据什么。所以正确的做法是两条并行:账务上只允许「红字冲销加蓝字重开」,操作日志上完整记录冲销与重开的全过程,两者在单据号上建立关联。
顺着这条思路还可以核对一个常见细节。《中华人民共和国会计法》(2024 年 6 月 28 日第三次修正,自 2024 年 7 月 1 日起施行)第十七条要求各单位定期将会计账簿记录与实物、款项及有关资料相互核对,保证账实相符、账证相符、账账相符、账表相符;第十五条则规定账簿记录发生错误或者隔页、缺号、跳行的,应当按照国家统一的会计制度规定的方法更正,并由会计人员和会计机构负责人(会计主管人员)在更正处盖章。落到系统里,这两条对应的就是「更正动作必须有责任人标识」——日志中的操作人字段,就是那个盖章位置的电子对应物。
五个高频问题与处理建议
最后列出五个在项目实施与检查中反复出现的问题,附带处理建议。
- 日志只存在应用服务器本地磁盘:出现滚动覆盖是常态,必须在部署阶段就把日志集中存储,而不是等到需要的时候才发现只剩 7 天
- 日志时间使用本地系统时间且未标时区:跨系统拼接时间线时会出现前后矛盾,统一使用带时区的时间格式是成本最低的改进
- 导出与打印未记录:数据外带风险最高的两类动作反而常常没有留痕,建议将导出与打印纳入需要记录的强制动作并记录导出条件与记录条数
- 日志中直接存放未脱敏的证件号、银行账号、薪资信息:日志的访问控制通常弱于业务数据,泄露风险更高,应对敏感字段做脱敏或掩码处理
- 把日志当成备份用:日志与备份解决的是两个问题,日志不具备恢复数据的能力,反过来备份也不能替代日志,两者都要有且不能互相顶替
资料来源:《中华人民共和国网络安全法》(2016 年 11 月 7 日第十二届全国人民代表大会常务委员会第二十四次会议通过,自 2017 年 6 月 1 日起施行)第二十一条;《信息安全技术 网络安全等级保护基本要求》(GB/T 22239—2019,2019 年 5 月 10 日发布、2019 年 12 月 1 日实施)8.1.4.3 安全审计;《会计软件基本功能和服务规范》(财政部,财会〔2024〕12 号,2024 年 7 月 29 日印发,自 2025 年 1 月 1 日起施行)第二十一条、第三十二条;《会计信息化工作规范》(财政部,财会〔2024〕11 号,2024 年 7 月 26 日印发,自 2025 年 1 月 1 日起施行)第十六条、第十七条;《中华人民共和国会计法》(2024 年 6 月 28 日第十四届全国人民代表大会常务委员会第十次会议第三次修正,自 2024 年 7 月 1 日起施行)第十五条、第十七条;《会计档案管理办法》(财政部、国家档案局令第 79 号,自 2016 年 1 月 1 日起施行)及附表。