json-log-viewer:217⭐的终端 JSON 日志交互式查看器

在微服务和容器化时代,日志输出早已从纯文本转向了结构化 JSON 格式。虽然这种格式便于程序解析,但当你需要在终端里查看成千上万行嵌套的 JSON 日志时,体验堪称灾难。今天要介绍的 json-log-viewer 就是为解决这个痛点而生的一款小众工具。

项目概览

属性内容
GitHubhedhyw/json-log-viewer
Stars217
语言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}}

一行日志占据大半屏幕,关键信息被淹没在嵌套结构里。传统的 cattailjq 虽然能处理,但要么缺乏交互性,要么需要记忆复杂的查询语法。

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特点适用场景
jq30k+强大的命令行 JSON 处理器脚本处理、数据转换
fx20k+交互式 JSON 查看器通用 JSON 文件浏览
lnav7k+通用日志文件查看器非结构化日志分析
json-log-viewer217专为结构化日志设计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