关于log.error的细节理解
log.error可以向控制台和Logback指定的文件同时输入
不加Log.error不会向Logback指定文件里面输入内容
没加log.error之前
- 我是使用自定义异常处理的,代码如下
@ExceptionHandler(GuliException.class) //指定处理自定义异常
@ResponseBody //为了能够返回数据而不是页面转换
public R GuliException(GuliException e) {
e.printStackTrace();
//log.error(e.getMessage());
return R.failed(e.getCode() + e.getMsg());
}
@ApiOperation("分页查找所有的老师")
@GetMapping("/pageFindAllTeacher/{current}/{limit}")
public R pageFindAllTeacher(@PathVariable long current,
@PathVariable long limit){
try{
int i=10/0;
}
catch (Exception e){
throw new GuliException(20001,"执行了自定义异常处理");
}
Page<EduTeacher> page = new Page<>(current, limit);
IPage<EduTeacher> result = eduTeacherService.page(page, null);
return R.ok(result);
}
- 上述接口调用后
- 控制台上会产生
- log.error文件里面为空,不管这个错误的接口调用几次都是空白
现修改上述自定义异常
@ExceptionHandler(GuliException.class) //指定处理自定义异常
@ResponseBody //为了能够返回数据而不是页面转换
public R GuliException(GuliException e) {
e.printStackTrace();
log.error(e.getMessage()); //加上这句话
return R.failed(e.getCode() + e.getMsg());
}
-
控制台输出
- 2021-12-29 19:42:12 |ERROR |http-nio-8002-exec-7 |GlobalExceptionHandler.java:38 |com.ws.eduservice.exceptionHandler.GlobalExceptionHandler |null
-
文件Log.error点一次接口就会多一行数据
Plugs:我还研究了下这张图片
- 这个时候的异常处理代码为
\
- 其中的e.printStackTrace()就是上述图片的第一行到倒数第二行的打印
- log.error就是上述图片的最后一行
- 当将e.printStackTrace注释掉后,调用该接口控制台就只会打印一行代码,如下
就是上述图片的第一行到倒数第二行的打印 - log.error就是上述图片的最后一行
- 当将e.printStackTrace注释掉后,调用该接口控制台就只会打印一行代码,如下