简单粗暴,看一下下面几种常见的错误写法,当然这个错误的前提是确实是想打印异常堆栈信息为前提
首先来看下error方法
的接口定义
分析一下上面三种写法的后果
- 异常会被当做参数传递解析成异常的类名入参,所以最终只会打印异常的类名
- 这个写法不标准, 异常要打印,不需要占位符,但是如果只有一个参数的话不会有影响
- 这个其实和1是一样的概念, 如果确实不想打印异常堆栈,这种写法没有问题, 如果想打印异常堆栈, 则应该只需要一个占位符, 然后传递业务参数,最后传异常类
总结
// 只打印异常堆栈
log.error("方法执行异常, 错误信息: ", e);
// 打印多个参数和异常堆栈
log.error("入参方法执行异常, uid={}, os={}, 异常信息: ", "001", "PC", e);