ble信息,因为logger.error(msg)和logger.error(msg,e.getMessage())这样的日志输出方法会丢失掉最重要的StackTrace信息。
Void foo(){
Try{
......
}catch(Exception e){
Logger.error(e.getMessage());//错误
Logger.error(“msg”,e.getMessage());//错误
Logger.error(“msg”,e);//正确
}
}
3) 对与不是特别重要的异常,不允许记录日志后又抛出异常,因为这样会多次记录日志,只允许记录一次
Try{
......
}catch(Exception ex){
Logger.error(errorMessage,ex);
Throw new UserSercviceException(errorMessage,ex);
}
4) 不允许出现System print(包括System.out.println和System.error.println)语句。
5) 不允许出现e.printStackTrace。
6) 日志性能的考虑,如果代码为核心代码,执行频率非常高,则输出日志建议增加判断,尤其是低级别的输出<debug、info、warn>。
7) 有意义的日志
通常情况下在程序日志里记录一些比较有意义的状态数据:程序启动,退出的时间点:
程序运行消耗时间;耗时程序的执行进度;重要变量的状态变化。
除此之外,在公共的日志里规避打印程序的调试或者提示信息。
说明:大量地输出无效日志,不利于系统性能提升,也不利于快速定位错误点。记录日志请思考:这些日志真的有人看吗?看到这条日志你能做什么?能不能给问题排查带来好处?