Springcloud学习笔记62---log.error()打印内容区别
1. log.error(“异常信息:”+e.getMessage)
没有异常信息,没有堆栈信息
@PostMapping("/logtest") public void logtest(){ try { int i=1/0; } catch (Exception e) { log.error("异常信息:"+e.getMessage()); } }
测试结果:
2024-03-13 14:12:16.555 | ERROR | http-nio-7012-exec-1 | com.ttbank.flep.controller.UserController:70 | [] | [] - 异常信息:/ by zero
2 log.error(“异常信息:”+e)
@PostMapping("/logtest") public void logtest(){ try { int i=1/0; } catch (Exception e) { log.error("异常信息:"+e); } }
测试结果:
2024-03-13 14:17:02.532 | ERROR | http-nio-7012-exec-1 | com.ttbank.flep.controller.UserController:70 | [] | [] - 异常信息:java.lang.ArithmeticException: / by zero
3 log.error(“异常信息:”,e);
最佳实践。可以得到异常的信息和堆栈信息
@PostMapping("/logtest") public void logtest(){ try { int i=1/0; } catch (Exception e) { log.error("异常信息:", e); } }
测试结果:
2024-03-13 14:22:17.725 | ERROR | http-nio-7012-exec-2 | com.ttbank.flep.controller.UserController:70 | [] | [] - 异常信息: java.lang.ArithmeticException: / by zero at com.ttbank.flep.controller.UserController.logtest(UserController.java:68) [classes/:?] at com.ttbank.flep.controller.UserController$$FastClassBySpringCGLIB$$adad7f81.invoke(<generated>) [classes/:?]
注意:一般再加一行, e.printStackTrace() 会把 stack trace 信息直接输出到控制台。
4 log.error("eee{}","11111",e); 占位变量
public void error(String msg, Throwable t);
测试代码:
@PostMapping("/logtest") public void logtest(){ String name="lucky"; String address="taitian"; try { int i=1/0; } catch (Exception e) { log.error("异常信息:{}, {}",name, address, e); } }
在logback的实现里面有个特殊的处理
会判断下最后一个参数(注意只在最后)是否是Throwable对象,如果是 ,就打印异常堆栈。
参考文献:
https://blog.csdn.net/jiangyyyeff/article/details/122580977
https://blog.csdn.net/qq_19642249/article/details/88538303
https://blog.csdn.net/renzhe1301/article/details/121268510