RuoYi-Vue日志系统详解:操作日志与异常监控

RuoYi-Vue日志系统详解:操作日志与异常监控

【免费下载链接】RuoYi-Vue :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 【免费下载链接】RuoYi-Vue 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue

在企业级应用开发中,日志系统是保障系统稳定运行和问题排查的关键组件。RuoYi-Vue作为一款成熟的前后端分离权限管理系统,内置了完善的日志记录机制,能够全面监控用户操作行为和系统异常情况。本文将从操作日志记录流程和异常监控处理机制两个维度,深入解析RuoYi-Vue日志系统的实现原理与使用方法。

操作日志记录机制

注解驱动的日志采集

RuoYi-Vue采用注解方式实现操作日志的无侵入式采集,核心注解为@Log。开发人员只需在需要监控的控制器方法上添加该注解,系统即可自动记录操作详情。

@Log(title = "用户管理", businessType = BusinessType.INSERT)
@PostMapping("/user")
public AjaxResult addSave(@Validated @RequestBody SysUser user) {
    // 用户新增逻辑
}

注解定义位于ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java,通过title属性描述操作名称,businessType枚举指定业务类型(如新增、修改、删除等)。

日志切面实现原理

系统通过AOP切面技术拦截带有@Log注解的方法调用,核心实现类为ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java。该切面包含三个关键方法:

  • doBefore:记录请求开始时间
  • doAfterReturning:处理正常返回的日志记录
  • doAfterThrowing:处理异常情况下的日志记录

日志采集流程如下:

  1. 拦截注解方法调用,记录开始时间
  2. 执行目标方法,捕获返回结果或异常
  3. 组装操作日志对象SysOperLog
  4. 通过异步任务保存日志数据

日志数据存储与展示

操作日志最终存储在数据库表oper_log中,对应实体类ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java。系统提供了完整的日志管理界面,位于前端视图src/views/monitor/operlog/,支持日志查询、导出和清理功能。

后台控制器实现位于ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java,提供了分页查询、批量删除和日志清理接口。

异常监控与处理机制

全局异常处理架构

RuoYi-Vue采用全局异常处理器统一捕获和处理系统异常,核心实现类为ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java。该类使用@RestControllerAdvice注解声明,能够捕获所有控制器层抛出的异常。

异常分类处理策略

系统对不同类型的异常进行分类处理,主要包括:

  1. 权限校验异常:处理AccessDeniedException,返回403权限不足错误
  2. 请求方式不支持:处理HttpRequestMethodNotSupportedException,提示不支持的请求方法
  3. 业务异常:处理自定义ServiceException,返回业务错误信息
  4. 参数验证异常:处理BindExceptionMethodArgumentNotValidException,返回参数校验结果
  5. 系统异常:处理ExceptionRuntimeException等未捕获异常

异常处理流程: mermaid

异常信息记录与展示

系统在处理异常时,会通过日志框架输出详细的异常堆栈信息,同时将关键错误信息记录到操作日志的error_msg字段。对于前端用户,异常信息会通过AjaxResult对象返回,格式如下:

{
  "code": 500,
  "msg": "操作失败",
  "data": null
}

系统监控界面提供了异常日志的查看入口,位于src/views/monitor/operlog/,可通过状态筛选查看失败的操作记录及其错误信息。

日志系统最佳实践

敏感信息过滤

为保护用户隐私,日志系统默认过滤敏感字段,如密码、令牌等。在LogAspect.java中定义了排除属性列表:

public static final String[] EXCLUDE_PROPERTIES = { "password", "oldPassword", "newPassword", "confirmPassword" };

通过PropertyPreExcludeFilter实现JSON序列化时的字段过滤,确保敏感信息不会被记录到日志中。

异步日志保存

为避免日志记录影响主业务流程性能,系统采用异步方式保存日志。通过ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java管理异步任务,将日志保存操作提交到线程池执行,实现日志记录与业务逻辑的解耦。

日志配置优化

系统日志配置文件位于logback.xml(需手动创建),建议根据实际需求调整日志级别和输出策略:

  • 开发环境:设置为DEBUG级别,输出详细日志
  • 生产环境:设置为INFO级别,减少日志量
  • 关键业务:单独配置日志输出,便于问题排查

总结与扩展建议

RuoYi-Vue的日志系统通过注解驱动和AOP切面技术,实现了操作日志的全自动记录,同时采用全局异常处理器统一管理系统异常,为系统运维提供了有力支持。建议在实际项目中:

  1. 扩展日志类型,增加业务日志和数据变更日志
  2. 集成ELK等日志分析平台,实现日志集中管理和实时监控
  3. 增加日志告警机制,对关键异常自动发送通知
  4. 定期清理历史日志,优化数据库性能

通过合理配置和扩展日志系统,可以有效提升系统的可维护性和问题排查效率,为企业级应用提供可靠的运行保障。

系统还提供了登录日志监控功能,位于src/views/monitor/logininfor/,可查看用户登录记录和失败尝试,进一步增强系统安全性。完整的日志管理功能构成了RuoYi-Vue系统的重要运维支撑模块,为系统稳定运行提供了全面保障。

【免费下载链接】RuoYi-Vue :tada: (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本 【免费下载链接】RuoYi-Vue 项目地址: https://gitcode.com/GitHub_Trending/ru/RuoYi-Vue

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值