外观
📝 独立日志与诊断
基线:InvSync 2.5.32-BETA 新增功能,尚未经过完整实测。本页描述的是代码中已实现的记录与导出能力,实际效果请在测试服验证后再依赖。
独立日志让插件在不开启 debug 的情况下持续记录运行轨迹:玩家反馈“东西没了”时,不再需要开调试等下一次复现,直接导出诊断包即可回溯。
日志只写入插件目录,不改变原本的控制台输出行为。
三类记录
| 产物 | 内容 | 位置 |
|---|---|---|
| 运行轨迹 | 加载、保存、交接等过程的详细调试信息,按天滚动 | plugins/InvSync/logs/trace-{日期}.log |
| 数据流水 | 关键节点的结构化记录,一行一条 | plugins/InvSync/logs/audit-{日期}.jsonl |
| 异常档案 | 出错现场:堆栈、环境、该玩家事前轨迹 | plugins/InvSync/logs/incidents/ |
- 运行轨迹不写入背包完整 NBT;日志里改用精简的物品清单(槽位 / 类型 / 数量)代替,避免单日日志膨胀。
- 数据流水覆盖加载、保存、踢出、备份、恢复、编辑、删除等节点,管理员操作会记录操作者。
- 异常档案在加载失败、等锁超时、保存失败、跨服交接失败、Redis 出错、退出读取失败、物品被跳过时自动生成;同一玩家 30 秒内只保留一份。
命令
需要 invsync.command,与控制台一致。
| 命令 | 用途 |
|---|---|
/invsync log status | 查看运行状态、当前文件、待写入与丢弃计数、现有档案数 |
/invsync log player 玩家 [条数] | 查看该玩家最近的数据流水,默认 15 条,最多 50 条 |
/invsync log incident 玩家 | 手动生成一份异常档案,玩家反馈问题时先留证 |
/invsync log export [小时] [玩家] | 打包诊断文件,默认最近 24 小时 |
log export 的小时数上限受运行轨迹保留天数约束,超出保留期的内容本就已经删除。指定玩家时会额外筛出该玩家相关的日志行。
诊断包
/invsync log export 生成的文件位于 plugins/InvSync/logs/export:
- 期间内的运行轨迹与数据流水;
- 异常档案;
- 环境信息(插件版本、服务端、Java);
- 已脱敏的配置,连接密码等字段自动打码。
诊断包同样受保留策略约束,固定只保留最近 10 个,不计入日志总大小上限。
发送前请自行确认
虽然配置中的密码会被打码,诊断包仍然包含玩家 UUID、物品清单与操作记录。请只发送给作者,不要在公开频道贴出完整内容。
配置
log-recorder 分组,默认全部开启:
| key | 默认 | 含义 |
|---|---|---|
enabled | true | 总开关;关闭后不记录任何文件 |
trace | true | 是否把全部调试信息写入轨迹;关闭后只记录 info 及以上级别 |
retention-days | 7 | 轨迹保留天数,范围 1–90 |
max-total-size-mb | 512 | 日志目录总大小上限,超限从最旧文件删除,0 不限制 |
max-file-size-mb | 50 | 单文件上限,超限切分为 .1 / .2 |
audit | true | 是否记录数据流水 |
audit-retention-days | 30 | 流水保留天数,范围 1–365 |
item-summary | true | 流水里是否附精简物品清单,只在物品变化时记录 |
memory-buffer-lines | 5000 | 内存里保留的轨迹行数,供异常档案附带上下文,约 1MB |
incident.enabled | true | 是否自动生成异常档案 |
incident.retention-days | 30 | 档案保留天数,最多 1000 份 |
incident.include-raw-data | true | 档案是否附带出问题的原始数据,便于离线复现 |
隔天的轨迹文件会自动压缩为 .log.gz;老配置文件缺少这些 key 时按默认值补全,不需要手动迁移。
边界
- 独立日志不是数据库和世界备份的替代品,它只记录过程,不能把数据还原回某个时刻。
- 日志记录在插件自己的写线程上,磁盘写满或目录不可写时会停止记录,不影响同步主流程。
debug仍然只控制控制台是否输出详细内容;想看详细记录不需要打开它。