json-log-viewer:217⭐的终端 JSON 日志交互式查看器
json-log-viewer:217⭐的终端 JSON 日志交互式查看器
在微服务和容器化时代,日志输出早已从纯文本转向了结构化 JSON 格式。虽然这种格式便于程序解析,但当你需要在终端里查看成千上万行嵌套的 JSON 日志时,体验堪称灾难。今天要介绍的 json-log-viewer 就是为解决这个痛点而生的一款小众工具。
项目概览
| 属性 | 内容 |
|---|---|
| GitHub | hedhyw/json-log-viewer |
| Stars | 217 |
| 语言 | Go |
| 特点 | 终端原生、交互式过滤、字段可折叠 |
| 最后更新 | 2 周前 |
它解决了什么问题
现代应用的日志通常长这样:
{"timestamp":"2026-03-19T10:23:45Z","level":"error","service":"payment-api","trace_id":"abc123","message":"database connection timeout","meta":{"retry_count":3,"endpoint":"/v1/charge","latency_ms":5234}}
一行日志占据大半屏幕,关键信息被淹没在嵌套结构里。传统的 cat、tail 或 jq 虽然能处理,但要么缺乏交互性,要么需要记忆复杂的查询语法。
json-log-viewer 提供了一个类 Vim 的交互界面,让你可以在终端里像浏览文件一样浏览日志,同时保持 JSON 的结构化优势。
核心特性
1. 交互式过滤
按 l 键唤出过滤输入框,支持多种过滤模式:
- 精确匹配:
level:error只显示错误级别日志 - 模糊搜索:
timeout匹配所有包含该关键词的行 - 正则表达式:
/payment|charge/同时匹配多个关键词 - 字段过滤:
latency_ms>5000筛选高延迟请求
2. 字段折叠与高亮
- 自动识别 JSON 层级,可折叠嵌套对象
- 不同日志级别(debug/info/warn/error)用颜色区分
- 时间戳、trace_id 等常用字段自动格式化
3. 多种输入方式
# 直接读取文件
jlv app.log
# 管道输入
cat app.log | jlv
# 实时追踪
tail -f app.log | jlv
# 支持压缩文件
jlv app.log.gz
4. 自定义主题
内置多种配色方案,也支持通过 YAML 配置文件自定义:
theme:
background: "#1e1e1e"
level_error: "#ff6b6b"
level_warn: "#feca57"
timestamp: "#48dbfb"
同类工具对比
| 工具 | Stars | 特点 | 适用场景 |
|---|---|---|---|
| jq | 30k+ | 强大的命令行 JSON 处理器 | 脚本处理、数据转换 |
| fx | 20k+ | 交互式 JSON 查看器 | 通用 JSON 文件浏览 |
| lnav | 7k+ | 通用日志文件查看器 | 非结构化日志分析 |
| json-log-viewer | 217 | 专为结构化日志设计 | JSON 日志实时查看与过滤 |
jq 和 fx 更适合处理静态 JSON 文件,而 json-log-viewer 针对的是流式日志场景——当需要持续监控或快速排查问题时,它的实时过滤和日志级别着色更加实用。
适用场景
推荐使用:
- 容器化应用的日志排查(Docker/Kubernetes)
- 微服务架构下的分布式追踪
- 需要快速过滤特定错误类型的场景
- 不喜欢在浏览器和终端之间切换的后端开发者
不太适合:
- 需要复杂统计聚合的分析任务(交给 ELK 或 Grafana)
- 纯文本格式的传统日志(lnav 更合适)
- Windows 原生环境(目前仅支持 macOS 和 Linux)
快速开始
# macOS / Linux
go install github.com/hedhyw/json-log-viewer@latest
# 或者下载预编译二进制
curl -sL https://github.com/hedhyw/json-log-viewer/releases/latest/download/jlv-linux-amd64 -o jlv
chmod +x jlv
sudo mv jlv /usr/local/bin/
# 基本使用
jlv /var/log/myapp.log
注意事项
- 目前不支持 Windows(但 WSL 可用)
- 超大文件(GB 级别)加载需要等待索引
- 过滤表达式语法较简单,不支持复杂的多条件组合
总结
json-log-viewer 是一款定位精准的开发者工具。它不像 jq 那样功能全面,也不如 ELK 那样强大,但在”终端里快速查看 JSON 日志”这个特定场景下,它的交互体验无可替代。217 个 star 背后是一个小而美的解决方案——如果你经常和 Docker logs 打交道,值得一试。
| 属性 | 内容 |
|---|---|
| 仓库 | https://github.com/hedhyw/json-log-viewer |
| 许可证 | MIT |
| 语言 | Go |
| 维护者 | @hedhyw |