系统日志
项目提供 2 类 4 种系统日志:
- 审计日志:用户的操作日志、登录日志
-
1. 操作日志
操作日志,记录「谁」在「什么时间」对「什么对象」做了「什么事情」。
打开 [系统管理 -> 审计日志 -> 操作日志] 菜单,可以看到对应的列表,如下图所示:
操作日志的记录,由 ykkj-spring-boot-starter-biz-operatelog技术组件实现,framework/operatelog/core/aop/OperateLogAspect.java通过 Spring AOP 拦声明了 @OperateLog注解的方法,异步记录日志。使用示例如下:
操作日志的存储,由 ykkj-module-system 的 module/system/service/logger/OperateLogServiceImpl.java模块实现,记录到数据库的 system_operate_log表。1.1 @OperateLog 注解
@OperateLog 注解,一共有 6 个属性,如下图所示:

module 属性:操作模块,例如说:用户、岗位、部门等等。为空时,默认会读取类上的 Swagger @Api 注解的 tags 属性。
- name 属性:操作名,例如说:新增用户、修改用户等等。为空时,默认会读取方法的 Swagger @ApiOperation 注解的 value 属性。
type 属性:操作类型,在 framework/operatelog/core/enums/OperateTypeEnum.java枚举。目前有 GET 查询、CREATE 新增、UPDATE 修改、DELETE 删除、EXPORT 导出、IMPORT 导入、OTHER 其它,可进行自定义。
1.2 自动记录
操作日志往往记录的是针对某个对象的写操作,所以针对 POST、PUT、DELETE 等写请求,ykkj-spring-boot-starter-biz-operatelog 组件会自动记录操作日志。
基于请求方法,转换出对应的 type 操作方法:POST 对应 CREATE 类型,PUT 对应 UPDATE 类型,DELETE 对应 DELETE 类型,其它对应 OTHER 类型。
- 基于 Swagger 注解,转换出对应的 module 操作模块、name 操作名。
因此,绝大多数 RESTful API 对应的方法,无需添加 @OperateLog 注解。例如说:
一般来说,只有两种场景需要添加 @OperateLog 注解。
① 场景一:需要自定义 @OperateLog 注解的属性。例如说:
② 场景二:不想自动记录操作日志。例如说:
2. 登录日志
登录日志,记录用户的登录、登出行为,包括成功的、失败的。
打开 [系统管理 -> 审计日志 -> 登录日志] 菜单,可以看对应的列表,如下图所示:
登录日志的存储,由 ykkj-module-system 的 module/system/service/logger/LoginLogServiceImpl.java模块实现,记录到数据库的 system_login_log表。
登录类型通过 module/system/enums/logger/LoginLogTypeEnum.java枚举,登录结果通过 module/system/enums/logger/LoginResultEnum.java枚举,都可以自定义。代码如下:
3. API 访问日志
API 访问日志,记录 API 的每次调用,包括 HTTP 请求、用户、开始时间、时长等等信息。
打开 [基础设施 -> API 日志 -> 访问日志] 菜单,可以看对应的列表,如下图所示:
访问日志的记录,由 ykkj-spring-boot-starter-web技术组件实现,通过 framework/apilog/core/filter/ApiAccessLogFilter.java过滤 RESTful API 请求,异步记录日志。
访问日志的存储,由 ykkj-module-infra 的 infra/service/logger/ApiAccessLogServiceImpl.java模块实现,记录到数据库的 infra_api_access_log表。
4. API 错误日志
API 错误日志,记录每次 API 的异常调用,包括 HTTP 请求、用户、异常的堆栈等等信息。
打开 [基础设施 -> API 日志 -> 错误日志] 菜单,可以看对应的列表,如下图所示:
错误日志的记录,由 ykkj-spring-boot-starter-web技术组件实现,通过 framework/web/core/handler/GlobalExceptionHandler.java拦截每次 RESTful API 的系统异常,异步记录日志。
错误日志的存储,由 ykkj-module-infra 的 infra/service/logger/ApiErrorLogServiceImpl.java模块实现,记录到数据库的 infra_api_error_log表。
