# 错误捕获和日志系统使用指南 ## 🎯 系统功能概述 本系统已集成了完整的错误捕获和日志记录功能,能够自动捕获、分类保存和查看各种类型的错误信息。 ## 📁 错误日志分类 ### 自动分类保存 所有错误信息会自动保存到 `logs/errors/` 目录,按类型分类: 1. **启动错误** (`startup-error-*.log`) - 应用启动失败 - Spring Boot初始化异常 - 配置加载错误 2. **运行时错误** (`runtime-error-*.log`) - 空指针异常 - 非法参数异常 - Java模块访问异常 3. **数据库错误** (`database-error-*.log`) - 数据库连接失败 - SQL执行异常 - MyBatis持久化错误 4. **业务错误** (`business-error-*.log`) - 监控服务异常 - 微信通知发送失败 - 业务逻辑处理错误 5. **启动信息** (`startup-info.log`) - 应用启动过程记录 - 数据库健康检查结果 - 系统配置信息 ## 🚀 启动和查看错误 ### 启动应用 ```cmd # 使用增强的调试脚本启动(推荐) start_debug.bat # 或使用简单启动脚本 start_with_logging.bat ``` ### 查看错误信息 #### 1. 文件系统方式 ```cmd # 查看所有错误日志文件 dir logs\errors\*.log # 查看启动错误(最重要) type logs\errors\startup-error-*.log # 查看启动信息 type logs\errors\startup-info.log # 查看最新的运行时错误 type logs\errors\runtime-error-*.log ``` #### 2. Web接口方式 应用启动后,访问以下接口: - **错误状态概览**: http://localhost:8080/api/error-logs/status - **错误文件列表**: http://localhost:8080/api/error-logs/files - **读取具体文件**: http://localhost:8080/api/error-logs/content?fileName=startup-error-2025-08-12.log ## 🔍 错误诊断流程 ### 1. 应用启动失败 ```cmd # 运行调试脚本 start_debug.bat # 检查启动错误日志 type logs\errors\startup-error-*.log # 检查启动信息 type logs\errors\startup-info.log # 检查数据库连接 netstat -an | findstr 5432 ``` ### 2. 运行时错误 ```cmd # 查看运行时错误日志 type logs\errors\runtime-error-*.log # 查看业务错误日志 type logs\errors\business-error-*.log # 通过Web接口查看 # 访问: http://localhost:8080/api/error-logs/status ``` ### 3. 数据库相关错误 ```cmd # 查看数据库错误日志 type logs\errors\database-error-*.log # 查看数据库健康检查结果 type logs\errors\startup-info.log | findstr "数据库\|健康检查" ``` ## 📊 Web错误监控界面 ### API接口说明 1. **GET /api/error-logs/status** - 获取错误统计信息 - 返回各类错误数量和日志文件大小 2. **GET /api/error-logs/files** - 获取所有错误日志文件列表 - 包含文件大小、修改时间等信息 3. **GET /api/error-logs/content?fileName=xxx&lines=100** - 读取指定日志文件内容 - 默认显示最后100行 4. **DELETE /api/error-logs/cleanup?keepDays=7** - 清理超过指定天数的旧日志文件 - 默认保留7天 ### 使用示例 ```bash # 获取错误状态 curl http://localhost:8080/api/error-logs/status # 获取文件列表 curl http://localhost:8080/api/error-logs/files # 读取启动错误日志 curl "http://localhost:8080/api/error-logs/content?fileName=startup-error-2025-08-12.log&lines=50" ``` ## 🛠️ 故障排除 ### 常见问题及解决方案 #### 1. Java模块系统兼容性错误 ``` 错误: java.lang.reflect.InaccessibleObjectException 解决: 应用已自动设置所需的JVM参数,无需手动处理 ``` #### 2. 数据库连接失败 ``` 错误: 数据库连接异常 检查: - PostgreSQL是否启动 (netstat -an | findstr 5432) - 数据库是否已创建 (devops_gd) - 用户名密码是否正确 (postgres/123456) ``` #### 3. 端口占用 ``` 错误: 端口8080已被占用 解决: netstat -ano | findstr 8080 找到进程并结束 ``` #### 4. Maven参数解析错误 ``` 错误: Unknown lifecycle phase 解决: 使用提供的批处理脚本启动,避免PowerShell参数解析问题 ``` ## 📝 日志维护 ### 自动清理 ```bash # 通过Web接口清理7天前的日志 curl -X DELETE "http://localhost:8080/api/error-logs/cleanup?keepDays=7" ``` ### 手动清理 ```cmd # 删除所有错误日志(谨慎操作) del logs\errors\*.log # 删除超过7天的日志文件 forfiles /p logs\errors /s /m *.log /d -7 /c "cmd /c del @path" ``` ## 🔧 系统配置 ### 错误日志配置 - **位置**: `src/main/resources/logback-spring.xml` - **错误工具类**: `com.chinaweal.youfool.devops.util.ErrorLogUtils` - **全局异常处理**: `com.chinaweal.youfool.devops.config.GlobalExceptionHandler` ### 数据库健康检查 - **组件**: `com.chinaweal.youfool.devops.config.DatabaseHealthChecker` - **执行时机**: 应用启动完成后自动执行 - **检查内容**: 数据库连接、基本信息获取 ## 📋 最佳实践 1. **定期检查错误状态** - 访问 http://localhost:8080/api/error-logs/status - 关注错误数量变化趋势 2. **及时处理启动错误** - 启动失败时优先查看 `startup-error-*.log` - 根据错误信息进行针对性修复 3. **监控数据库健康** - 关注 `database-error-*.log` 中的连接失败记录 - 定期检查数据库健康检查结果 4. **日志文件管理** - 定期清理旧日志文件避免磁盘空间不足 - 保留重要的错误日志用于问题分析 ## 🆘 紧急情况处理 如果遇到严重错误无法启动: 1. **查看最新的启动错误日志** 2. **检查数据库服务状态** 3. **确认Java环境和Maven配置** 4. **使用Web接口(如果应用部分可用)获取详细错误信息** 5. **将错误日志文件提供给开发人员进行进一步分析**