ERROR 日志格式与注意点
程序代码中打印 ERROR 错误日志的基本原则:
尽可能的描述完整: 每一条错误日志都需要完整描述:什么场景下发生了什么错误, 什么原因导致的(或者有哪些可能原因,比如参数、其他系统数据等), 如何能解决(或者其他解决的相关提示);
尽可能的描述具体: 比如资源不足,可以细致的描述到:具体指的什么资源不足,是否可以直接在程序里指明,比如线程池资源不足 or 接口访问限流。
尽可能的描述直接: 最直观的错误日志应该让人在看完错误日志信息后,一下就能知道是什么原因导致的问题,该如何去解决,而不是还需要慢慢的调试程序,或者猜测真正的原因。
概括的说,错误日志应该做到:即使离开代码情境,也能清晰地描述发生了什么。
日志级别:
info 用于打印程序应该出现的正常状态信息, 便于追踪定位,通常用于定位逻辑 bug。
warn 表明系统出现轻微的不合理但不影响运行和使用,这个日志的级别关键在于不影响运行,可以忽略。
error 表明出现了系统错误和异常,无法正常完成目标操作。error 需要人工干预。
ERROR 日志格式
[类名{必填}] [方法名{必填}] [错误现象{必填}] [条件{必填}] [可能原因{选填}] [需要怎么做{选填}][栈信息]
类名:类名。
方法名:方法名。
错误现象:描述错误现象,比如"接口超时"或者"接口返回异常"。
条件:接口参数或者类 DTO 入参序列化结果。
可能原因:描述错误可能原因,比如"缓存满了"或者"某某权限无法获取",错误码,非必选。
需要怎么做:描述建议操作, 比如"更新某键值缓存","修改某某权限",非必选。
通用错误 , 要指明在什么场景下发生的,可能便于后续统计的工作。
版权声明: 本文为 InfoQ 作者【zarmnosaj】的原创文章。
原文链接:【http://xie.infoq.cn/article/b19330857713f3e969dd1a7c2】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论