文章

系统操作日志

系统操作日志

开发框架目前支持方法调用的日志功能,日志记录保存在系统日志表SECURITY_LOG中。

系统日志功能页面见下图:

23-1


1.表设计

日志表设计如下:

23-2

示例代码所在位置:

23-3


2.配置默认系统代号

在对应环境的security配置文件中添加base.security.system.code配置。

系统代号会在操作日志和登录登出日志中使用。

  • 操作日志@Log中当未配置systemCode时,会记录配置的默认系统代号。
  • 登录登出日志中直接记录配置的默认系统代号。

配置示例如下:

1
2
#系统代号配置
base.security.system.code=backend-framework-template

3.系统操作日志

开发框架支持方法级别的日志,通过在方法上添加@Log注解即可实现。

3.1.基础用法

1
2
3
4
5
6
7
8
9
10
@Log(value = "新增测试数据")
@Operation(description = "新增数据")
@RequestMapping(value = "/create", method = RequestMethod.POST)
public boolean create(@RequestBody Test test) {
  boolean result = myBaseService.save(test);
  if (result == false) {
    throw new BusinessException("新增记录失败!");
  }
  return result;
}	

@Log的value值为调用此方法时保存的固定日志信息。


当注解只使用value属性时,可以省略value=,只写字符串。写法如下:

@Log(“新增测试数据”)

(注意:注解配置多个属性时value不能省略)

以上写法同:@Log(value = “新增测试数据”)


3.2.完整用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Log(value = "修改测试数据", needRecord = true, systemCode = "templateSystem", module = "日志记录模块")
@Operation(description = "修改数据")
@RequestMapping(value = "/update", method = RequestMethod.POST)
public boolean update(@RequestBody Test test) {
  String id = test.getId();
  if (StringUtils.isBlank(id)) {
    throw new BusinessException("修改记录时id不能为空!");
  }
  boolean result = myBaseService.updateById(test);
  if (result == false) {
    throw new BusinessException("修改记录失败!");
  }
  return result;
}
  • @Log的value值为调用此方法时保存的固定日志信息。
  • @Log的needRecord值标识是否需要保存方法调用前后的记录信息。needRecord默认值为false,不保存记录。needRecord=true表示保存记录。 当开启了了needReport后,新增、删除和更新操作都需要传数据库实体对象(具有ID主键属性)作为参数,同时mapper文件的命名必须满足框架默认的命名规则,即“实体类的名称Mapper“。因为框架默认会使用实体对象对应Mapper类的selectById方法去查询数据库数据信息。
  • @Log的systemCode为系统代号,标识日志属于哪个系统。如果未配置,则记录配置文件的默认系统代号。默认系统代号为对应环境的security配置文件中的base.security.system.code配置。
  • @Log的module为日志的自定义模块名称,标识日志属于的系统模块。

以上4个参数可分别单独使用。


3.3.@Log日志模板

@Log的value属性除了支持固定内容,还可以支持日志模板,日志模板中可以使用方法传入的所有参数值。

用法一,value值中配置日志模板:

示例如下:

@Log(“新增用户:#{user.name}”)

public void getUserInfo(User user){

xxx

}

#{}中可以使用方法传入的所有参数值,上例模板中使用的是方法参数值user。


用法二,通过配置文件配置日志模板:

@Log(“${base.security.log.template.user.create}”)

配置文件中配置:

base.security.log.template.user.create=新增用户:#{user.name}


4.登录登出日志

开发框架已经默认保存用户登录和登出系统的操作日志,无需进行额外配置。登录登出日志的系统代号默认使用对应环境的security配置文件中配置的系统代号。

本文由作者按照 CC BY 4.0 进行授权