TOC

logfmt 日志格式

Logfmt 起源于 Heroku,是主流 field=value 空格分隔式结构化日志标准,区别于无键顺序式的 CLF、带表头的 ELF。
PS:Heroku 是最早期成立的 PaaS 平台,2007 年上线,2010 年被 Salesforce 2 亿美金收购,现在已经很难听到这家公司的名字,可能是不行了。曾经在云计算领域还是很有影响力的,甚至云原生的规范也由 Heroku 提出。
PS:Heroku 采用了自研的 dyno 容器平台,当然也是基于 Linux 提供的隔离技术,不过和后面的行业标准 runc/containerd/docker 没有一毛钱关系。

语法规则极简:单行由多组 key=value 空格分隔,含空格、特殊字符的值用双引号包裹,无多余符号,一行一条日志。示例:
ts=2026-07-07T16:00:00 level=WARN path="/user/detail" latency=350ms msg="query timeout"

  1. 对比 CLF / ELF,无需固定字段顺序,可按需扩展业务字段。
    相比 JSON,可读性还是稍微强一点
  2. 生态成熟,各种语言都有成熟的库,Loki、ELK 等日志平台原生支持解析。
  3. 短板是只支持简单类型(字符串、数字、布尔值)(部分实现支持 null 空值),如果有嵌套结构数据还是只能用 JSON 了。
    在日志的场景下,去掉复杂数据类型表现能力,其实又何尝不是一个优点呢?
如果你有魔法,你可以看到一个评论框~