【日志框架】Step日志记录
<p>【日志框架】Step日志记录
默认情况下所有的controller都自动记录日志,自动记录用户自定义参数
如果controller需要记录请求和响应参数需要在controller方法上面增加注解@StepLog
@RequestMapping("/partition")
@StepLog
public String partition(String partition) {
if ("1".equals(partition)) {
throw new RuntimeException(partition);
}
return infoService.query4(partition, "123");
}
不记录请求参数
@StepLog(input = false)
不记录响应结果
@StepLog(output = false)
隐藏请求某个参数
@StepLog(hiddenInput = {"0.h1", "1.h3", "h4"})
其中0,1表示参数顺序,默认不写时,表示第一个参数
按条件隐藏请求参数
@StepLog(hiddenInputOnCondition = "com.ailk.ecs.test.controller.ControllerHidden")
这个自定义类ControllerHidden必须实现com.ailk.ecs.log.trace.HiddenOnCondition
public class ControllerHidden implements HiddenOnCondition {
@Override
public String[] onCondition(Object[] o) {
Map inMap = (Map) o[0];
if ("1".equals(inMap.get("h1"))) {
return new String[] {"h4"};
} else {
return new String[] {"h2"};
}
}
}
在这个方法里面返回条件结果,返回参数的形式和hiddenInput 一样
隐藏响应结果中的某个参数
@StepLog(hiddenOutput = {"pwd"})
直接字段名,暂不支持多层结构
按条件隐藏响应结果中的参数
@StepLog(hiddenOutputOnCondition = "com.ailk.ecs.test.controller.ControllerHidden")
同hiddenInputOnCondition
默认在step中不记录自定义参数,若想打开
@StepLog(selfDefined = true)
在处理过程中添加自定义参数</p>
<p>LogContext.setSelfDefined("key", "value");
同一个类中一个方法调用另外一个方法即使加上注解@StepLog也不会打印日志</p>