logfmt 转 JSON 转换工具

在你的浏览器中直接把 logfmt key=value 日志转为 JSON 并可反向转换。你的日志行留在你的设备上。

你的日志行在浏览器本地转换,绝不会被上传,但请避免把包含真实机密、令牌或个人数据的日志粘贴到任何工具中。

需要进一步重塑 JSON?试试 JSON 格式化工具。

关于 logfmt 转 JSON

这款 logfmt 转 JSON 转换工具会把 key=value 结构化日志行转成干净的 JSON 对象,也能把 JSON 反向转回 logfmt。logfmt 是你在 Heroku 路由日志、Grafana Loki 以及使用 log/slog 的 Go 服务中见到的那种面向行的格式,其中每一行都是一系列 key=value 对。作为一个 logfmt 解析器,它尊重包含空格或等号的双引号值,把没有值的裸键视为布尔 true,并可选地把 true、false 和数字字符串转换成真正的 JSON 类型。每一行变成一个对象;多行则变成一个 JSON 数组,让你可以一次性传入整段日志摘录。它专为希望把日志整理成脚本或仪表盘所需形状的后端工程师和 SRE 打造。转换完全在你的浏览器中运行,因此你粘贴的日志行在本地处理,绝不会离开你的设备。

功能特性

如何使用 logfmt 转 JSON

  1. 选择一个方向:logfmt 转 JSON,或 JSON 转 logfmt。
  2. 把你的日志行或 JSON 粘贴到左侧的输入框中。
  3. 开关「Coerce types」以控制数字和布尔的检测。
  4. 在右侧查看转换后的输出,然后复制它或下载文件。

示例

输入

level=info msg="hello world" count=3 ok=true

输出

{
  "level": "info",
  "msg": "hello world",
  "count": 3,
  "ok": true
}

带引号的值保留其空格,而 count 和 ok 被转换成一个数字和一个布尔值。

常见错误与故障排除

常见问题

什么是 logfmt?
logfmt 是一种简单的、面向行的日志格式,其中每一行都是一系列 key=value 对,例如 level=info msg="started" count=3。它被 Heroku、Grafana Loki 和 Go 服务广泛使用,因为它对人类可读、对机器也易于解析。
带引号的值是如何处理的?
双引号值会被完整保留,因此引号内的空格和等号仍是值的一部分,例如 msg="a=b c=d" 会解析为字符串 "a=b c=d"。带引号的值总被当作字符串,绝不会被转换成数字或布尔。
「Coerce types」开关有什么作用?
开启转换后,裸的 true 和 false 值会变成 JSON 布尔,而像 200 或 0.5 这样的数字字符串会变成 JSON 数字。关闭它可让每个值都保持为字符串,这在像 007 这样的标识符必须原样保留时很有用。
没有值的键会被如何转换?
一个没有等号的孤立键,例如 debug,是一个 logfmt 标志,在 JSON 输出中会变成 true。这遵循常见的 logfmt 约定:裸键表示一个已被设置的布尔。
我可以把 JSON 转回 logfmt 吗?
可以。把方向切换到 JSON 转 logfmt,然后粘贴一个对象或一个对象数组。每个对象变成一行 logfmt,包含空格、等号或引号的值会自动加双引号。
我的日志行会被上传到任何地方吗?
不会。logfmt 与 JSON 的转换完全在你的浏览器中运行,因此你粘贴的日志行在你的设备上本地处理,绝不会发送到服务器。

相关工具

全部 ArrayKit 工具