- 输出Exceptions的全部Throwable信息,因为logger.error(msg)和logger.error(msg,e.getMessage())这样的日志输出方法会丢失掉最重要的StackTrace信息
try{
//do somethings ...
}catch (Exception e){
log.error(e.getMessage());//错误
log.error("xxx",e.getMessage());//错误
log.error("xxx",e.toString());//错误
log.error("xxx异常",e);//正确
}
- 使用占位符,而不是字符串拼接,字符串较多时,对性能有影响
log.error("str:" + str + ", str2:" + str2, e);//错误
log.error("str:{}, str2:{}", str, str2, e);//正确
- 不允许记录日志后又抛出异常,因为这样会多次记录日志,只允许记录一次日志
try{
//do somethings ...
}catch (Exception e){
log.error("xxx异常",e);
throw new Exception("xxx异常",e);
}
- 不允许出现System print(包括System.out.println和System.error.println)语句
try{
//do somethings ...
}catch (Exception e){
System.out.println(e.getMessage());//错误
System.err.println(e.getMessage());//错误
log.error("xxx异常",e);//正确
}
- 不允许出现printStackTrace
try{
//do somethings ...
}catch (Exception e){
e.printStackTrace(); //只能输出在控制台当中,日志文件看不到
}
个人微信公众号,欢迎关注。