注单审核异常正常吗(平台注单异常需要审核多久)
一、使用SLF4J门面模式的日志框架
这个 就不必多说了
二、打日志的正确方式
什么时候该打日志:
当你遇到问题时,可以通过打印日志来解决的,良好的系统是可以通过日志来定位问题的当你碰到 if else swtitch 这样的分支时,要在分支的首行打印日志 用来确定进入哪个分支了经常以核心功能开发,你应该在提交代码前,通过日志 可以看到整个流程使用参数化信息的方式: logger.debug(" 财务保存线下收款单,收款单号:[{}] ,创建人:[{}]", receiptTaskNo, creatEmp);
不要进行字符串拼接,那样会产生很多String对象,占用空间,影响性能。
logger.debug(" 财务保存线下收款单,收款单号:[{}] ,创建人:[{}]", receiptTaskNo, creatEmp);
这样的格式写法,可读性更好,对于排查问题更有帮助。
三、通常使用的不同级别的日志
ERROR:
该级别的错误需要马上被处理,当ERROR错误发生时,已经影响了用户的正常访问,是需要马上得到管理员介入并处理的,常见的异常情况有:
空指针异常打开配置文件失败所有第三方对接的异常(包括第三方返回错误码)所有影响功能使用的异常,包括:SQLException和除了业务异常之外的所有异常(RuntimeException和Exception)等等如果有Throwable信息,需要记录完成的堆栈信息:
log.error("获取用户[{}]的用户信息时出错", userName, e);
如果进行了抛出异常操作,请不要记录error日志,由最终处理方进行处理:
反例(不要这么做)
try { .... } catch (Exception e) { String errorMessage = "收款单审核异常:"; LOGGER.error("收款单审核异常", e); throw new ServiceException(errorMessage,e);}
ERROR:
不应该出现但是不影响程序、当前请求正常运行的异常情况:
有容错机制的时候出现的错误情况找不到配置文件,但是系统能自动创建配置文件性能即将接近临界值的时候,例如:缓存池占用达到警告线业务异常的记录,危险操作。比如:当接口抛出业务异常时,应该记录此异常INFO:
系统运行信息
Service方法中对于系统/业务状态的变更主要逻辑中的分步骤定时任务等外部接口部分
客户端请求参数远程服务调用参数和调用结果注意:
\1. 并不是所有的service都进行出入口打点记录,单一、简单service是没有意义的
\2. 对于复杂的业务逻辑,需要进行日志打点,以及埋点记录,比如电商系统中的下订单逻辑,以及业务状态变更。
\3. 对于整个系统的提供出的接口,使用info记录入参
\4. 调用其他第三方服务时,所有的出参和入参是必须要记录的(因为你很难追溯第三方模块发生的问题)