说明:由于统一拦截日志请求,导致所有匹配的请求都会打印日志,这里需要控制有些请求执行不打印日志,比如定时每隔几秒执行某些请求。
具体实现如下:
一、自定义注解,如下:
/**
* @Description: 日志权限
* @Author:
* @Date: 2020/6/12 10:11
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface LogPermission {
/**
* 是否写入存储介质 (默认拦截)
*/
boolean write() default true;
/**
* 是否输出到控制台
*
* @return
*/
boolean print() default true;
}
二、在日志拦截切面,添加如下逻辑
三、具体使用
可以根据业务需要,在不需要日志记录的地方,添加下列注解
@LogPermission(print=false) //不允许日志输出到控制台,但允许日志存储
@LogPermission(write=false) //不允许日志存储,但允许日志输出到控制台
@LogPermission(print=false,write=false) //不允许日志存储,也不允许日志输出到控制台
例如:删除子系统不需要记录日志,也不存储日志,操作如下:
@PostMapping("deleteSystems")
@ApiOperation("删除子系统")
@ApiImplicitParams(value = {
@ApiImplicitParam(name = "systemIds[]", value = "子系统表ID列表", dataType = "string", paramType = "form", required = true)
})
@LogPermission(print=false,write=false) //不允许日志存储,也不允许日志输出到控制台
public void deleteSystems(@RequestParam("systemIds[]") List<String> systemIds) {
systemsService.deleteSystems(systemIds);
}