Files
layue13andClaude Opus 5.5 7f68e5682e feat: 运维日志策略、玩家与服务器事件日志、滚动日志文件
- docs/logging.md 规定各级别写什么、永远不写什么,以及新增日志的做法
- core.log.ConnectionLog 统一写玩家(加入、离开、转服、转服失败、未能加入)和服务器
  (注册、地址变更、注销、不可达/恢复)事件,logger 为 moonbridge.players / moonbridge.servers
- LogText 清理对端与插件文本(控制字符、双向文字控制字符、长度上限),防止伪造日志行
- logging.playerAddresses 开关:false 时玩家地址写成 [hidden]
- Session 记录结束原因(先记录者为准),在 closePair 中写离开或未能加入的原因
- 合并的 WARN(ThrottledWarning):连接数上限、插件命令/补全/事件/初次选服过载
- 控制通道:租约过期、注册被拒(按地址和原因去重);插件启用/停用;启动与关闭摘要
- logback:控制台 + logs/latest.log,按天压缩滚动保留 14 天;测试只写控制台

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 16:44:27 +08:00

3.5 KiB

设计文档

文档描述当前实现;源码和自动化测试是行为核对依据。各验收记录注明了自己的日期、提交和环境,详见验证方法。

从这里开始

文档 内容
架构与边界 模块职责、会话状态、线程模型、转服、目录所有权
消息与命令补全 富文本、模板、异步参数补全及协议边界
插件开发 生命周期、玩家/服务器视图、选服、命令与统一类型化事件 API
转服协调 登录前决策、可选源服释放、异步确认、期限与失败边界
玩家权限与 LuckPerms 通用权限接口、提供者生命周期、命令鉴权和原生 LuckPerms 平台插件
初次登录路由 显式入口、插件策略、超时、重试安全边界与验收契约
玩家操作与部署完善设计 消息、主动断开、服务器列表配置与验收边界
运行配置 认证、接入限制、超时、启动和部署边界
日志策略 各级别写什么、日志文件位置、玩家 IP 开关和永远不写的内容
WebSocket 接入 与 TCP 并存的 WebSocket 玩家监听、CDN 部署、真实 IP 与客户端 mod
后端 Channel 消息服务 共享宿主、跨后端路由、消息身份与交付语义
Channel 消息设计契约 从参与者、寻址、响应与失败语义推导 API 和验收条件
验证方法 自动化测试、烟测、真实客户端与合成性能测量
发行物与安装位置 gradlew release 产出的服务器包、后端插件、客户端 mod 各装在哪里
发布与依赖版本 本地 SNAPSHOT、CI 不可变版本、Maven 构件和发行包的区别

当前可引用的验证记录

设计约束:核心管理连接和协议;插件负责玩法与访问策略。ServerView 是后端目录快照,发现方式是目录的提供者,不引入核心负载观测。准入与会话通知使用同一事件类型、监听器和注册表;不同事件在派发策略上处理结果。常规 PLAY 转发没有通用事件派发。