# 日志系统使用说明 ## 概述 本项目集成了完整的日志系统,基于Spring Boot + Logback实现,提供了多层次的日志记录和管理功能。 ## 日志配置 ### 配置文件位置 - 主配置文件:`src/main/resources/logback-spring.xml` - 应用配置:`src/main/resources/application.yml` ### 日志文件存储位置 - 根目录:`logs/` - 系统信息日志:`logs/sys-info.log` - 系统错误日志:`logs/sys-error.log` - 相机操作日志:`logs/camera.log` - 二维码识别日志:`logs/qrcode.log` - 定时任务日志:`logs/schedule.log` ### 日志轮转策略 - 单个文件最大大小:100MB - 保留历史文件:30天 - 总大小限制:3GB(系统日志)、1GB(相机日志)、500MB(其他日志) ## 日志级别 - **DEBUG**: 详细的调试信息,主要在开发环境使用 - **INFO**: 一般信息,记录重要的业务流程 - **WARN**: 警告信息,不影响程序运行但需要注意 - **ERROR**: 错误信息,程序发生异常或错误 ## 使用方式 ### 1. 使用Lombok注解 ```java @Slf4j @Service public class YourService { public void yourMethod() { log.info("这是一条信息日志"); log.error("这是一条错误日志", exception); } } ``` ### 2. 使用LogUtil工具类 LogUtil提供了更丰富的日志记录方法: ```java // 相机操作日志 LogUtil.logCameraStart("camera001", "captureImage"); LogUtil.logCameraSuccess("camera001", "captureImage", 1500); LogUtil.logCameraError("camera001", "captureImage", "连接超时"); // 二维码识别日志 LogUtil.logQRCodeStart("image.jpg", "complexDecode"); LogUtil.logQRCodeSuccess("image.jpg", "QR123456", 800); LogUtil.logQRCodeError("image.jpg", "无法识别二维码", 1200); // 定时任务日志 LogUtil.logScheduleTask("清理任务", "START", "开始执行清理任务"); LogUtil.logScheduleTask("清理任务", "SUCCESS", "清理完成,删除了50个文件"); // API请求日志(自动记录) // 通过LogAspect切面自动记录所有Controller的请求和响应 // 性能监控 LogUtil.logPerformance("复杂计算", 5000, 2000); // 超过阈值会记录警告 // 业务日志 LogUtil.logBusiness("INFO", "OrderService", "订单{}创建成功", orderId); ``` ### 3. 异常处理 ```java try { // 业务逻辑 } catch (Exception e) { LogUtil.logSystemException("UserService", "createUser", e); // 或 log.error("用户创建失败", e); } ``` ## API接口 系统提供了日志管理的REST API: ### 1. 获取日志文件列表 ``` GET /api/logs/files ``` ### 2. 下载日志文件 ``` GET /api/logs/download/{fileName} ``` ### 3. 查看日志内容 ``` GET /api/logs/view/{fileName}?lines=100 ``` ### 4. 清理日志文件 ``` DELETE /api/logs/clear?keepDays=7 ``` ## 最佳实践 ### 1. 日志级别使用建议 - **生产环境**: INFO级别,关闭DEBUG - **测试环境**: DEBUG级别,便于问题排查 - **开发环境**: DEBUG级别,详细记录 ### 2. 日志内容规范 - 包含关键业务标识(如用户ID、订单号、设备ID) - 记录操作耗时,便于性能分析 - 异常日志要包含完整的堆栈信息 - 避免记录敏感信息(密码、密钥等) ### 3. 性能考虑 - 避免在循环中频繁记录日志 - 大对象日志要谨慎,可能影响性能 - 合理使用日志级别,避免不必要的字符串拼接 ## 日志分析 ### 1. 常用日志查询 ```bash # 查看相机错误日志 grep "ERROR" logs/camera.log # 查看特定相机的操作记录 grep "camera001" logs/camera.log # 查看超时的请求 grep "超过阈值" logs/sys-info.log ``` ### 2. 日志监控 可以结合ELK、Graylog等日志分析工具进行实时监控和告警。 ## 故障排查 ### 1. 日志文件过大 - 检查日志级别设置 - 使用清理API定期清理旧日志 - 调整logback-spring.xml中的轮转参数 ### 2. 日志无法记录 - 检查logs目录权限 - 确认logback配置正确 - 查看应用启动日志是否有配置错误 ### 3. 性能问题 - 减少DEBUG级别日志 - 优化高频调用的日志记录 - 考虑异步日志配置 ## 扩展配置 如需添加新的日志分类,在`logback-spring.xml`中添加: ```xml ${log.path}/custom.log ${log.path}/custom.%d{yyyy-MM-dd}.%i.log 50MB 15 ${log.pattern} UTF-8 ```