-
Notifications
You must be signed in to change notification settings - Fork 7
How To Use Log Annotation
zifangsky edited this page Mar 21, 2019
·
1 revision
@ResponseBody
@RequiresPermissions("/aaa/bbb")
@RequestMapping(value = "/selectByUsername", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@WebLog(content = "在controller中执行 selectByUsername 方法,查询用户名:#{username}")
public SysUser selectByUsername(String username) {
return testService.selectByUsername(username);
}
@WebLog(content = "请求的用户名:#{greeting.name},年龄:#{greeting.age},IP:#{ip}", type = LogTypes.BUSINESS, module = "测试业务接口", condition = "#{greeting.age>10}")
public HelloMessage greeting(Greeting greeting, String ip) {
HelloMessage message = new HelloMessage();
if(greeting != null){
message.setContent("Hello <" + greeting.getName() + "," + greeting.getAge() + ">,Welcome!");
}
return message;
}
以下是@WebLog注解的详细参数说明:
用于设置日志正文部分,默认为空字符串。支持使用类SPEL表达式(语法:#{参数})动态传递日志数据,比如上面的#{username}
和#{greeting.name}
。
用于设置某条日志的类型。当前内置了两种日志类型:
- OPERATION:操作日志
- BUSINESS:业务日志
用于设置某条日志所属的业务模块,默认为空字符串。同样也支持使用类SPEL表达式(语法:#{参数})
用于设置在什么条件下记录某条日志,当该参数是不为空的字符串时生效。此外,该参数是一个类SPEL表达式的条件,比如上面的#{greeting.age>10}
用于设置在什么条件下不记录某条日志,当该参数是不为空的字符串时生效。此外,该参数是一个类SPEL表达式的条件,同时跟参数condition
的含义刚好相反
这个注解实际上是@WebLog注解
的数组形式,用于同时记录多条不同的日志,使用示例如下:
@WebLogs({
@WebLog(content = "查询用户名【#{username}】的基本信息", type = LogTypes.BUSINESS, module = "用户模块")
,@WebLog(content = "执行 selectByUsername 方法", type = LogTypes.OPERATION)
})
public SysUser selectByUsername(String username) {
return userMapper.selectByUsername(username);
}