5.7 KiB
5.7 KiB
错误捕获和日志系统使用指南
🎯 系统功能概述
本系统已集成了完整的错误捕获和日志记录功能,能够自动捕获、分类保存和查看各种类型的错误信息。
📁 错误日志分类
自动分类保存
所有错误信息会自动保存到 logs/errors/ 目录,按类型分类:
-
启动错误 (
startup-error-*.log)- 应用启动失败
- Spring Boot初始化异常
- 配置加载错误
-
运行时错误 (
runtime-error-*.log)- 空指针异常
- 非法参数异常
- Java模块访问异常
-
数据库错误 (
database-error-*.log)- 数据库连接失败
- SQL执行异常
- MyBatis持久化错误
-
业务错误 (
business-error-*.log)- 监控服务异常
- 微信通知发送失败
- 业务逻辑处理错误
-
启动信息 (
startup-info.log)- 应用启动过程记录
- 数据库健康检查结果
- 系统配置信息
🚀 启动和查看错误
启动应用
# 使用增强的调试脚本启动(推荐)
start_debug.bat
# 或使用简单启动脚本
start_with_logging.bat
查看错误信息
1. 文件系统方式
# 查看所有错误日志文件
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. 应用启动失败
# 运行调试脚本
start_debug.bat
# 检查启动错误日志
type logs\errors\startup-error-*.log
# 检查启动信息
type logs\errors\startup-info.log
# 检查数据库连接
netstat -an | findstr 5432
2. 运行时错误
# 查看运行时错误日志
type logs\errors\runtime-error-*.log
# 查看业务错误日志
type logs\errors\business-error-*.log
# 通过Web接口查看
# 访问: http://localhost:8080/api/error-logs/status
3. 数据库相关错误
# 查看数据库错误日志
type logs\errors\database-error-*.log
# 查看数据库健康检查结果
type logs\errors\startup-info.log | findstr "数据库\|健康检查"
📊 Web错误监控界面
API接口说明
-
GET /api/error-logs/status
- 获取错误统计信息
- 返回各类错误数量和日志文件大小
-
GET /api/error-logs/files
- 获取所有错误日志文件列表
- 包含文件大小、修改时间等信息
-
GET /api/error-logs/content?fileName=xxx&lines=100
- 读取指定日志文件内容
- 默认显示最后100行
-
DELETE /api/error-logs/cleanup?keepDays=7
- 清理超过指定天数的旧日志文件
- 默认保留7天
使用示例
# 获取错误状态
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参数解析问题
📝 日志维护
自动清理
# 通过Web接口清理7天前的日志
curl -X DELETE "http://localhost:8080/api/error-logs/cleanup?keepDays=7"
手动清理
# 删除所有错误日志(谨慎操作)
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 - 执行时机: 应用启动完成后自动执行
- 检查内容: 数据库连接、基本信息获取
📋 最佳实践
-
定期检查错误状态
- 访问 http://localhost:8080/api/error-logs/status
- 关注错误数量变化趋势
-
及时处理启动错误
- 启动失败时优先查看
startup-error-*.log - 根据错误信息进行针对性修复
- 启动失败时优先查看
-
监控数据库健康
- 关注
database-error-*.log中的连接失败记录 - 定期检查数据库健康检查结果
- 关注
-
日志文件管理
- 定期清理旧日志文件避免磁盘空间不足
- 保留重要的错误日志用于问题分析
🆘 紧急情况处理
如果遇到严重错误无法启动:
- 查看最新的启动错误日志
- 检查数据库服务状态
- 确认Java环境和Maven配置
- 使用Web接口(如果应用部分可用)获取详细错误信息
- 将错误日志文件提供给开发人员进行进一步分析