一、使用SLF4J外观模式的日志框架

这个不用多说了

二、创建日志的正确方法

我应该什么时候写日志?

如果出现问题,可以打印日志来解决。好的系统可以通过日志找到问题。遇到if else swtitch等分支时,要在分支的第一行打印日志,以确定哪个分支经常开发为核心功能,请在提交代码之前通过日志使用整个流程的参数化信息: logger.debug('财务存储离线收据,收据编号:[{}],创建者:[{}]',这将生成许多字符串对象,占用空间,并影响性能。

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. 调用其他第三方服务时,所有的出参和入参是必须要记录的(因为你很难追溯第三方模块发生的问题)



1.《关于怎么使用打印机日记,你需要知道这些业务日志打印的正确姿势》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《关于怎么使用打印机日记,你需要知道这些业务日志打印的正确姿势》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/why/3029997.html