- Java 文件数: 13 个
- 总代码行数: ~1,496 行
- 主要组件:
- 核心类: 5 个
- Mixin 类: 3 个
- 配置和工具: 5 个
- 代码质量: ⭐⭐⭐⭐☆ (4/5)
- 线程安全: ⭐⭐⭐⭐⭐ (5/5)
- 错误处理: ⭐⭐⭐⭐☆ (4/5)
- 可维护性: ⭐⭐⭐⭐⭐ (5/5)
- 性能: ⭐⭐⭐⭐☆ (4/5)
- ✅ 修复暂停功能(runTick 注入)
- ✅ 配置系统
- ✅ 线程池和资源管理
- ✅ SRG 映射器改进
- ✅ Node.js 连接池和重试
- ✅ 构建成功
问题:
- 当前的
MixinLogCapture只是一个占位符 captureLog()方法是空的,没有实际捕获任何日志- 无法区分日志级别(INFO/WARN/ERROR/FATAL)
影响:
mc_get_logs命令返回空结果- 无法监控游戏运行时的警告和错误
- 调试功能大打折扣
问题:
- 只捕获
Minecraft.stop()调用 - 不捕获运行时异常
- 缺少异常来源追踪
问题:
- 所有日志只在内存中
- 游戏重启后丢失
- 无法查看历史日志
目标: 实现真正的日志拦截和分级存储
方案:
- 使用 Mixin 拦截 Log4j 的
logMessage方法 - 按级别分类存储(WARN/ERROR/FATAL)
- 写入独立的缓存文件
- 提供 MCP 命令查询不同级别的日志
实现:
- 创建
LogLevelCache.java- 分级日志缓存管理 - 改进
MixinLogCapture.java- 真正拦截日志 - 添加文件持久化(可选)
- 新增 MCP 命令:
mc_get_warns,mc_get_errors,mc_get_fatals
目标: 捕获所有未处理的异常
方案:
- 添加全局异常处理器
- 捕获线程异常
- 记录异常上下文(时间、线程、堆栈)
目标: 更详细的性能指标
方案:
- TPS 监控
- 渲染性能
- 网络性能
- 实体性能分析
LogLevelCache.java
- WARN 缓存 (100 条)
- ERROR 缓存 (100 条)
- FATAL 缓存 (50 条)
- 时间戳记录
- 线程信息
- 日志来源MixinLogCapture.java
- 拦截 logMessage() 方法
- 提取日志级别
- 提取日志内容
- 分发到对应缓存- mc_get_warns - 获取 WARN 级别日志
- mc_get_errors - 获取 ERROR 级别日志
- mc_get_fatals - 获取 FATAL 级别日志
- mc_get_logs_by_level <level> - 按级别查询
- mc_clear_logs <level> - 清除指定级别日志GlobalExceptionHandler.java
- 捕获未处理异常
- 记录异常上下文
- 分类存储ThreadExceptionMonitor.java
- 监控所有线程
- 捕获线程崩溃
- 记录线程状态TPSMonitor.java
- 实时 TPS 计算
- TPS 历史记录
- 卡顿检测PerformanceProfiler.java
- 方法耗时统计
- 热点分析
- 性能报告优点:
- 直接拦截 Log4j
- 性能开销小
- 可以获取完整信息
实现:
@Mixin(value = AbstractLogger.class, remap = false)
public class MixinLogCapture {
@Inject(method = "logMessage", at = @At("HEAD"), remap = false)
private void captureLog(String fqcn, Level level, Marker marker,
Message message, Throwable t, CallbackInfo ci) {
LogLevelCache.addLog(level, message.getFormattedMessage(), t);
}
}优点:
- 不需要 Mixin
- 更标准的方式
缺点:
- 需要修改 Log4j 配置
- 可能被其他 mod 影响
- 使用 LinkedList
- 固定大小
- 快速访问- 写入 logs/debug/ 目录
- 按日期分文件
- 支持历史查询- 当前: 60% (暂停、性能、世界检查可用)
- 改进后: 95% (日志、错误、性能全面可用)
- 当前: 中等(缺少日志监控)
- 改进后: 强大(完整的日志和错误追踪)
- 当前: 需要手动查看日志文件
- 改进后: 通过 Claude Code 直接查询
- ✅ 创建
LogLevelCache.java - ✅ 改进
MixinLogCapture.java - ✅ 更新
DebugTcpService.java添加新命令 - ✅ 更新
mcp-server/index.js添加新工具 - ✅ 测试日志捕获
- 改进异常捕获
- 添加上下文信息
- 测试错误追踪
- 添加 TPS 监控
- 添加性能分析
- 测试性能工具
- ✅ 修复日志捕获系统(最重要)
- ✅ 添加分级日志查询
- 测试所有功能
- 添加日志过滤功能
- 添加日志搜索功能
- 添加性能分析工具
- 添加自动化测试
项目整体架构良好,主要问题是日志捕获功能未实现。通过实施上述改进,可以将项目从"基础可用"提升到"功能完整"的专业调试工具。
关键改进: 实现真正的日志拦截和分级存储,这将大幅提升调试能力。