json-log-viewer 是一款专为结构化日志设计的终端查看工具。它用 Go 语言编写,基于 Bubble Tea TUI 框架,能把枯燥的 JSON 日志转换成可交互、可过滤、易读的格式。

项目速览

属性内容
GitHubhedhyw/json-log-viewer
Stars217
语言Go
特点交互式、过滤、快捷键操作
最后更新21天前

它解决了什么问题

现代应用普遍输出 JSON 格式的结构化日志,但这带来一个痛点:人眼难以直接阅读。当需要排查问题时,我们往往面临这样的场景:

  • 日志文件动辄上万行,cattail 只能看到一堆转义字符
  • 关键信息 buried 在嵌套的 JSON 字段里
  • 想按时间、级别、服务名过滤,只能用 grep 写复杂的正则

json-log-viewer 把这些问题一次性解决。它不需要配置,不需要启动 Web 服务,打开终端就能用。

核心功能

交互式浏览

启动后,日志以表格形式呈现,支持键盘上下翻页。每条日志的字段被自动解析,按列显示。按 Enter 可以展开单行查看完整 JSON。

实时过滤

/ 进入搜索模式,支持以下语法:

  • level:error —— 只显示错误级别日志
  • service:api AND duration>1000 —— 组合条件过滤
  • message~timeout —— 模糊匹配

过滤是实时的,大型日志文件也能秒级响应。

字段定制

默认会自动识别常见字段(timestamp、level、message 等),也可以通过配置文件自定义显示哪些列、如何格式化。

浅色/深色主题

t 切换主题,适配你的终端配色偏好。

快速开始

安装

Homebrew:

brew install hedhyw/tap/json-log-viewer

Go install:

go install github.com/hedhyw/json-log-viewer@latest

二进制下载:Releases 页面下载对应平台的可执行文件。

基本使用

# 查看文件
jlview application.log

# 管道输入
cat app.log | jlview

# 实时追踪
kubectl logs -f pod-name | jlview

横向对比

工具Stars特点
pamburus/hl3k功能丰富、高性能,但非交互式
brocode/fblog557极简,适合脚本集成
json-log-viewer217交互式 TUI,体验最接近传统日志查看器

如果你需要的是在终端里像用 less 一样浏览日志,但能智能解析 JSON,json-log-viewer 是更合适的选择。

适用场景

  • 本地开发:快速查看应用日志,不用打开浏览器或 IDE
  • 服务器排查:SSH 登录后直接查看,无需安装复杂依赖
  • CI/CD 调试:管道输入,分析构建日志
  • Kubernetes 运维:配合 kubectl logs 使用,比默认输出友好得多

注意事项

  • 需要终端支持 TUI(所有现代终端都没问题)
  • 极大型日志文件(GB 级别)建议先过滤再打开
  • 过滤语法简单但足够用,不支持复杂的正则表达式

总结

json-log-viewer 是一款小而美的工具。它没有庞大的功能矩阵,而是把「在终端里舒服地查看 JSON 日志」这一件事做到了极致。217 个 star 反映了它的专注,而非价值上限。如果你的日常工作涉及大量结构化日志,它是值得常驻 PATH 的工具。

属性内容
仓库https://github.com/hedhyw/json-log-viewer
许可证MIT
语言Go
维护者@hedhyw