C log

日志信息分类

以下内容系摘抄整理。

日志的等级由低到高应该是:Debug < Info < Warn < Error < Fatal

DEBUG INFO WARN ERROR FATAL
严重程度 最低 一般 较高 极高
严重性说明 调试时使用,便于开发者快速地详细地了解系统运行状况。正式发布时会禁用。 输出信息以反馈系统运行状态给用户。 可修复的潜在错误或不规范的代码、编译条件等。 可修复错误。软件无法正常运行。 相当严重的错误,可能无法修复。继续运行难以保证。
使用情况 用于打印程序应该出现的正常状态信息, 便于追踪定位。 表明系统出现轻微的不合理但不影响运行和使用。 表明出现了系统错误和异常,无法正常完成目标操作。

错误日志格式整理

错误日志格式大致可以有以下类型。

1
2
3
log.error(“[接口名或操作名] [Some Error Msg] happens. [params] [Probably Because]. [Probably need to do].”);

log.error(String.format(“[接口名或操作名] [Some Error Msg] happens. [%s]. [Probably Because]. [Probably need to do].”, params));

1
2
3
4
5
log.error(“[Some Error Msg] happens to 错误参数或内容 when [in some condition]. [Probably Because]. [Probably need to do].”);

log.error(String.format(“[Some Error Msg] happens to %s when [in some condition]. [Probably Because]. [Probably need to do].”, parameters));

[Probably Reason]. [Probably need to do]. 在某些情况下可以省略; 在一些重要接口和场景下最好能说明一下。

每一条错误日志都是独立的,尽可能完整、具体、直接说明何种场景下发生了什么错误,由什么原因导致,要采用什么措施或步骤。

错误日志的意义

错误日志是排查问题的重要手段之一。 当我们编程实现一项功能时, 通常会考虑可能发生的各种错误及相应原因:

要排查出相应的原因, 就需要一些关键描述来定位原因。这就会形成三元组:错误现象 -> 错误关键描述 -> 最终的错误原因

需要针对每一种错误尽可能提供相应的错误关键描述,从而定位到相应的错误原因。也就是说,编程的时候,要仔细思考, 哪些描述是非常有利于定位错误原因的, 尽可能将这些描述添加到错误日志中。

REFERENCE

  1. 日志级别的选择:Debug、Info、Warn、Error还是Fatal