日志级别详解:FATAL 到 TRACE 的正确用法
日志级别(Log Level)用于标记日志事件的严重程度。本文详解 FATAL、ERROR、WARN、INFO、DEBUG、TRACE 六个级别的含义与典型场景,以及在观测云中如何用 status 字段实现按级别检索、着色与告警。
日志级别(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:致命错误
含义:应用即将终止或已无法执行任何有效工作的最严重事件,通常在进程退出前记录。
典型场景:关键配置缺失且无降级方案;数据库等核心依赖完全不可用;磁盘/内存耗尽;检测到数据泄露级安全事件。
要点:必须携带完整诊断信息(至少包含堆栈),并对接最高优先级告警——在观测云中可为 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 提取时向这套标准映射,查看器着色与监控器才能正常工作 。
系列阅读:如何动态调整日志级别 | 如何选择日志框架