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 key=value 行转为 JSON 对象,每行一个对象
- 把多行日志摘录转为一个 JSON 数组,把单行转为单个对象
- 尊重包含空格或等号的双引号值
- 把 true、false 和数字字符串转换成真正的 JSON 类型,并可用开关将其保留为字符串
- 把没有值的裸键视为 logfmt 的布尔 true
- 反向转换,把 JSON 对象或对象数组转回 logfmt 行
- 写入 logfmt 时,为包含空格、等号或引号的 JSON 值加引号
- 一键复制结果,或将其下载为 logs.json 或 logs.logfmt
如何使用 logfmt 转 JSON
- 选择一个方向:logfmt 转 JSON,或 JSON 转 logfmt。
- 把你的日志行或 JSON 粘贴到左侧的输入框中。
- 开关「Coerce types」以控制数字和布尔的检测。
- 在右侧查看转换后的输出,然后复制它或下载文件。
示例
输入
level=info msg="hello world" count=3 ok=true
输出
{
"level": "info",
"msg": "hello world",
"count": 3,
"ok": true
}
带引号的值保留其空格,而 count 和 ok 被转换成一个数字和一个布尔值。
常见错误与故障排除
- 带空格的值被拆分到了两个键上。 — 把多词值用双引号包裹,例如 msg="hello world";在 logfmt 中,未加引号的空白会开始一个新键。
- 你想要真正的类型,但数字或布尔仍是字符串。 — 开启「Coerce types」,让裸的 true、false 和数字值变成 JSON 布尔和数字。
- JSON 转 logfmt 报告「must be an object or an array of objects」。 — logfmt 行是扁平的 key=value 对,因此输入必须是单个对象或对象数组,而不是裸的数字或字符串。
常见问题
- 什么是 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 工具