日志级别详解:FATAL 到 TRACE 的正确用法

日志级别(Log Level)用于标记日志事件的严重程度。本文详解 FATAL、ERROR、WARN、INFO、DEBUG、TRACE 六个级别的含义与典型场景,以及在观测云中如何用 status 字段实现按级别检索、着色与告警。

最佳实践
日志级别详解:FATAL 到 TRACE 的正确用法技术指南封面

日志级别(Log Level)是附加在每条日志上的严重程度标签,用于区分"系统正常运转的信息"与"需要关注的问题信号",并控制应用输出日志的数量。 理解和用好日志级别,是构建生产级日志策略的基本功。

核心要点速览

  • 日志级别是标记事件严重程度的标签,事实标准为 FATAL/ERROR/WARN/INFO/DEBUG/TRACE 六级。
  • 区分口诀:操作失败未自愈记 ERROR,异常苗头但系统正常记 WARN。
  • 生产默认 INFO;DEBUG/TRACE 不进生产,临时开启后务必关回。
  • 观测云链路:Pipeline 提取 status 字段 → 查看器按级别着色筛选 → 监控器按级别统计告警。

日志级别的由来

日志分级的传统可追溯到 1980 年代的 Syslog 协议,它定义了从 Emergency 到 Debug 的八个级别。此后 Log4j 等框架在此基础上简化演进,形成今天的六级体系。各语言命名略有差异,但 FATAL、ERROR、WARN、INFO、DEBUG、TRACE 已成为事实标准。

六个级别逐个讲清

FATAL:致命错误

含义:应用即将终止或已无法执行任何有效工作的最严重事件,通常在进程退出前记录。

典型场景:关键配置缺失且无降级方案;数据库等核心依赖完全不可用;磁盘/内存耗尽;检测到数据泄露级安全事件。

要点:记录可用于诊断的上下文;是否呼叫值班人员应按业务影响设定,不能只凭框架输出的级别名称决定。

ERROR:错误

含义:某个操作失败,但应用整体仍能运行。需尽快排查,但没有 FATAL 紧迫。

典型场景:外部 API 重试后仍失败;网络超时;资源创建失败;意外的解析异常。

要点:区分"真正的 ERROR"与"预期内异常"——可自愈的网络抖动先记 WARN,重试失败后升级为 ERROR。错误日志应自动附带堆栈。

WARN:警告

含义:发生意外情况但应用当前运转正常;或指标逼近阈值、不处理可能演变为故障。

典型场景:资源使用率逼近阈值;应用可自愈的瞬时错误;短时大量登录失败;依赖响应超预期。

要点:WARN 依赖预定义阈值体系——先定阈值(如磁盘 80%),越界记 WARN,告警规则盯住 WARN 趋势。

INFO:常规信息

含义:对业务有意义的正常运行事件,证明系统健康。生产环境默认级别通常是 INFO。

典型场景:服务启停;定时任务完成;业务状态流转;长任务关键进度。

要点:INFO 贵在克制——记录业务里程碑而非流水账,过度记录会淹没关键信息并推高存储成本。

DEBUG:调试

含义:帮助开发者定位问题的细节信息——变量值、查询语句、外部调用参数。

要点:生产环境默认关闭,排障时临时开启、用完立即关回。DEBUG 易夹带敏感信息,应避免记录凭据和完整请求体;必要字段在输出或上传前脱敏,并限制日志访问权限。

TRACE:跟踪

含义:比 DEBUG 更细粒度,逐行追踪代码执行路径——函数进出、循环迭代、中间结果。

要点:输出量海量,只适合开发测试环境,生产基本不应开启。

用级别控制日志量

级别体系自带"过滤闸门":设定最低级别后,低于它的日志被直接丢弃。生产环境设为 INFO,就只有 INFO/WARN/ERROR/FATAL 被记录。控制日志量的理由很实际:过量日志拖慢性能、推高存储与平台成本,还会淹没关键事件。

将应用级别映射到查询和告警

1. Pipeline 中提取 status 字段
观测云用标准字段 status 表示日志级别。在 Pipeline 中把各框架的级别输出映射归一(如 WARN/Warning 统一为 warning),未提取时 status 会被置为 公开资料未说明,无法按预期区分应用日志级别 。

2. 查看器按级别筛选与着色
在日志查看器中用快捷筛选按 status 过滤(如只看 error),不同级别以不同颜色呈现,便于区分;还可在"设置状态颜色"中自定义配色 。

3. 监控器按级别告警
在观测云中创建日志检测规则,按 service 和 status 筛选后统计条数。例如检测 mall-admin 服务 5 分钟内的 error 日志数,阈值和告警等级由业务影响决定,再通过告警策略配置接收人 。

自定义级别:慎用但有用

特殊业务可自定义级别(如独立的 SECURITY 安全审计级),但会牺牲标准化与一致性。引入前确认收益大于维护成本,并在 Pipeline 中做好到 status 的映射。

总结

级别的本质是信噪比管理:用对了,告警精准、检索高效、成本可控;用错了,要么淹没在 DEBUG 海洋,要么对 WARN 中的早期预警视而不见。团队应对齐使用约定并写进编码规范,同时保证级别字段在采集链路中被正确提取。

常见问题(FAQ)

Q:生产环境默认用什么级别?
绝大多数应用用 INFO——在"记录正常行为"与"控制日志量"之间取得平衡,排障时临时下调到 DEBUG。

Q:ERROR 和 WARN 怎么区分?
一句话标准:操作已失败且未自愈 → ERROR;出现异常苗头但系统尚正常 → WARN。

Q:观测云的 status 支持哪些取值?
采集时将框架级别解析到 status,未提取时为 公开资料未说明。先统一团队使用的级别映射,再让查询与检测规则使用相同取值;不要把应用级别直接等同于告警等级 。


系列阅读:如何动态调整日志级别 | 如何选择日志框架

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台