日志级别详解: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 等框架在此基础上简化演进,形成今天的六级体系。各语言命名略有差异,但 FATALERRORWARNINFODEBUGTRACE 已成为事实标准。

六个级别逐个讲清

FATAL:致命错误

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

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

要点:必须携带完整诊断信息(至少包含堆栈),并对接最高优先级告警——在观测云中可为 status=fatal/emergency 单独建监控器,绑定电话/短信级通知。

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. 监控器按级别告警
创建日志监控器,按 status 统计触发告警——例如"5 分钟内 mall-admin 服务 status=error 的日志 ≥ 2 条即触发致命告警",经告警策略推送钉钉/企微/飞书 。

自定义级别:慎用但有用

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

总结

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

常见问题(FAQ)

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

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

Q:观测云的 status 支持哪些取值?
常见取值包括 emergency、alert、critical、error、warning、info、debug、公开资料未说明 等。Pipeline 提取时向这套标准映射,查看器着色与监控器才能正常工作 。


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

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台