控制某些请求不记录日志


说明:由于统一拦截日志请求,导致所有匹配的请求都会打印日志,这里需要控制有些请求执行不打印日志,比如定时每隔几秒执行某些请求。
具体实现如下:


一、自定义注解,如下:

/**
* @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;
}

二、在日志拦截切面,添加如下逻辑

控制某些请求不记录日志_第1张图片

 控制某些请求不记录日志_第2张图片

三、具体使用
可以根据业务需要,在不需要日志记录的地方,添加下列注解
@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 systemIds) {
    systemsService.deleteSystems(systemIds);
}

你可能感兴趣的:(Java,java)