Files
noname-shuying/diagnostics/README.md
T

63 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 术樱包自动诊断日志
扩展加载后自动记录本扩展的关键业务步骤,发生错误时自动生成独立报告。
无需开启控制台或手动开始录制;不上传任何数据。
## 文件位置
PC 和安卓客户端均写入游戏目录下的 `extension/术樱包/logs/`。
- `runtime-*.jsonl`:按行保存时间、模块、步骤、关联 ID 和上下文。
- `report-*.json`:错误报告,包含首次/最近异常、错误栈、cause、内部异常、
运行版本、错误前操作、当前结算阶段和存档状态。
同一异常在存档层、结算层等多个入口被观察时,共用报告编号并更新修订号;
occurrences 表示被捕获的次数,不表示奖励发放次数。最近报告不会因普通日志
轮转被删除。保存回执绑定对应修订和真实通道,旧版本写入成功不会误标新版本。
扩展设置中的“诊断日志位置”显示实际位置和最近报告保存状态。
只需要保留相应报告和附近的 runtime 文件;如何发送由用户自行处理。
## 采集范围
- 主动记录术樱包加载、更新、梦三战斗、结算、存档、手牌、地图及菜单错误。
- 全局错误仅接收来源文件或异常栈属于本扩展的情况,包含编码后的中文路径。
- 不因为当前开启梦三就收集所有错误,也不根据错误消息包含“术樱包”归因。
- 原引擎错误处理仍会执行;不替换引擎事件、Promise 或 console 的原型。
## 存档诊断
报告分别记录 storageStatus、memoryPublished 和 commitReceipt:
- storageStatus=committed 表示存档事务完成,或 localStorage 写入已返回。
- memoryPublished=true 表示运行内存已发布成功存档。
- commitReceipt=true 表示结算协调器收到了提交成功结果。
资源清理、技能释放或地图展示随后失败时,不能据此判断存档失败。
重试沿用现有去重和奖励提交规则,日志不参与存档事务,也不触发自动重试。
## 容量与兼容
默认每秒批量保存普通日志;错误报告立即排入写入队列。运行日志按约
256 KiB 分段;内存保留最近约 512 KiB / 400 条记录。日志目录自动清理
系统自己生成的旧文件,保留总量约 5 MiB、最多 64 个文件。报告包含截断和
丢弃计数;“完整诊断”指受限的错误链与现场记录,不是无限保留整个游戏过程。
待写队列默认最多 12 项、合计 2 MiB,优先保存错误报告;另有最多一项正在写入。
错误报告复用已脱敏的记录文本,按字节预算一次裁剪,保留首次和最近异常。
PC 使用异步文件操作,安卓使用 Cordova 目录和 FileWriter 回调,写入前截断旧
内容,使用 UTF-8 Blob。单次保存操作设置 5 秒观察超时;超时后停止使用该
文件通道,避免迟到写入与后续写入重叠。写入异常不会中断游戏业务。
原生文件不可用时,降级到独立的 `shuying-diagnostics` IndexedDB;它不与
游戏存档共用数据库。若两种持久化方式都不可用,仅保留本次运行的内存
记录,菜单会明确显示未持久化,不能宣称文件已生成。
切入后台或页面隐藏时尝试保存缓冲;被系统强制杀死或断电时,最后尚未完成的
异步写入可能丢失。结算内部等待超过 15 秒会记录观察日志,选择奖励、地图节点
和剧情等待不会被当作超时错误;观察器不会结束业务事件。
字段过滤会隐藏凭据字段、常见 URL 凭据参数和 Bearer 内容。报告不会复制完整
玩家对象、DOM、引擎状态或整个存档。日志文件不进入发布清单和 Git。