一、使用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