必须先导出3类核心信息:一是档案系统版本号(从后台设置-关于页面直接复制),二是近3次系统更新的操作人、操作时间、执行的更新包名称,三是现有日志存储路径,常见路径:Windows系统为C:\Program Files\档案系统名称\logs,Linux系统为/opt/档案系统名/logs,Docker部署的话直接执行docker inspect 容器名 | grep LogPath获取路径。
提前安装3款工具:文本编辑器用Notepad++(官方下载地址:https://notepad-plus-plus.org/downloads/),日志分析工具用GoAccess(Debian/Ubuntu执行apt install goaccess安装,CentOS执行yum install goaccess安装,Windows直接下载便携包:https://goaccess.io/download),数据库管理工具用DBeaver(官方下载地址:https://dbeaver.io/download/)。
首先进入日志目录,找到update开头的日志文件,执行以下校验操作:首先看文件大小,正常单次更新日志至少1KB,小于100B的基本是写入中断;然后用Notepad++打开日志,看末尾是否有「更新执行完成」「更新成功」「更新失败回滚完成」的标识,如果没有就是日志写入中断;Linux系统可以直接执行命令grep -E "更新完成|更新失败" update_.log,没有输出即可确认日志不完整。
Windows系统右键日志文件夹-属性-安全,查看运行档案系统的用户(通常是SYSTEM或者自定义的服务用户)是否有「写入」「修改」权限,没有的话直接勾选后点击应用;Linux系统执行ls -ld 日志目录路径,查看属主是否是档案系统运行用户,不是的话执行chown -R 系统运行用户名:用户组 日志目录路径,权限不足的话执行chmod -R 755 日志目录路径。

如果更新操作发生在30天内,数据库通常还保留操作记录,按以下步骤操作:
1. 打开DBeaver连接档案系统的MySQL数据库,执行以下SQL查询更新操作记录:
```sql
SELECT update_id,operate_user,operate_time,update_content,execute_status
FROM sys_operation_log
WHERE operate_type = '系统更新'
AND operate_time >= 'YYYY-MM-DD' -- 替换成你要查询的起始日期
ORDER BY operate_time DESC;
```
2. 将查询到的对应更新记录,和现有残缺的日志内容拼接,补充到update_对应时间.log文件末尾,末尾补充一行「【补全标识】日志于YYYY-MM-DD 由XX人工补全,对应数据库记录ID:XXX」;
3. 重启档案系统的日志服务,Windows在服务管理器找到「档案系统日志服务」右键重启,Linux执行systemctl restart 档案系统名-log.service,Docker部署的话执行docker restart 容器名。
如果数据库的操作日志已经被清理,按以下步骤操作: 1. 找到对应版本的更新包官方发布页,通常在厂商官网的服务支持-更新公告板块,下载对应版本的更新说明文档; 2. 核对系统当前的版本号迭代节点,按照时间顺序整理每次更新的内容、修复问题、兼容调整项; 3. 按照现有更新日志的格式,手动创建对应时间的日志文件,文件名统一为update_年-月-日_时分秒.log,内容开头和现有日志保持一致,末尾标注「【历史补全】无原始执行日志,内容来自官方更新公告」。
打开档案系统的配置文件,Windows路径是C:\Program Files\档案系统名\config\log-config.yml,Linux是/opt/档案系统名/config/log-config.yml,直接复制以下配置替换原有更新日志配置段: ```yaml logger: name: update-log level: info path: /opt/档案系统名/logs/ Windows替换成C:\Program Files\档案系统名\logs\ max-size: 10MB 单日志文件最大10MB max-history: 365 保留365天日志 write-strategy: sync 同步写入,避免缓存丢失 append: true 每次更新追加写入,不覆盖 ``` 保存配置后重启日志服务生效。
新增定时校验任务,自动发现日志缺失问题:Windows在任务计划程序新建任务,触发条件设置为每天凌晨2点,操作是执行以下bat脚本:
```bat
@echo off
set log_path=C:\Program Files\档案系统名\logs\
findstr /m "更新完成" %log_path%update_.log > %log_path%missing_log.txt
if %errorlevel% equ 0 (
echo 所有更新日志正常 > %log_path%check_result.log
) else (
echo 存在缺失更新日志,请检查 > %log_path%check_result.log
)
```
Linux系统执行crontab -e,新增一行定时任务:
```
0 2 grep -L "更新完成" /opt/档案系统名/logs/update_.log > /opt/档案系统名/logs/missing_log.txt
```
如果有缺失日志,会自动写入missing_log.txt文件,方便定期排查。
所有操作完成后,执行3项验证:一是手动触发一次模拟小更新(比如修改系统配置后点保存更新,或者上传一个测试档案触发小版本迭代),查看对应生成的update日志是否完整,末尾有成功标识;二是手动执行日志校验脚本,查看check_result.log输出是否为正常;三是查看系统后台的更新日志页面,是否能正常展示所有补全的历史更新记录,没有报错。