在微服务和容器化时代,JSON 格式的结构化日志已经成为标配。但当你在终端里用 cattail 查看这些日志时,满屏的转义字符和嵌套括号让人头疼。fblog 就是来解决这个问题的——一个只有 555 stars 的轻量级 Rust 工具,能把 JSON 日志转换成人类可读的格式。

项目速览

属性内容
GitHubbrocode/fblog
Stars555
语言Rust
特点零配置、支持模板、过滤功能
最后更新17天前

它解决了什么问题?

想象你在调试一个 Node.js 服务,日志输出是这样的:

{"level":"error","message":"Connection failed","timestamp":"2026-03-20T00:00:00Z","meta":{"host":"db.example.com","port":5432,"retry":3}}

在一堆这样的日志里找问题,眼睛很快就会花掉。fblog 把它变成了:

ERROR: Connection failed
      host: db.example.com
      port: 5432
      retry: 3

不需要打开浏览器、不需要启动重量级日志平台,在终端里就能快速浏览和过滤。

核心功能

自动解析嵌套 JSON

无需配置,直接 pipe 进去就能用。支持任意层级的嵌套字段,自动展开成易读的键值对。

内置过滤

只关心错误?用 -f 'level == "error"'。想排除健康检查日志?用 -f '!message ~= /healthcheck/'。语法简单直观。

自定义输出模板

默认格式不合胃口?可以用 Handlebars 模板完全自定义输出样式,比如只显示时间、级别和消息,或者把特定字段高亮。

时间字段识别

自动检测常见的 timestamp 字段,并按时间顺序排列。支持 ISO 8601、Unix 时间戳等多种格式。

快速开始

# 安装(需要 Rust 工具链)
cargo install fblog

# 基本用法
cat app.log | fblog

# 只看错误
cat app.log | fblog -f 'level == "error"'

# 自定义格式
fblog --format "{{timestamp}} [{{level}}] {{message}}"

同类工具对比

工具Stars特点
hl2991功能更丰富,支持日志级别着色
json-log-viewer217交互式 TUI,支持搜索和筛选
fblog555极简设计,启动快,模板灵活

如果你需要一个即装即用、不占用资源、能集成到脚本里的日志查看器,fblog 比那些大而全的工具更合适。

适用场景

  • 本地开发:快速查看 Docker compose 输出
  • 服务器排查:SSH 到生产环境,tail -f 配合 fblog 实时监控
  • CI/CD 日志:在 GitHub Actions 或 GitLab CI 中美化测试日志
  • 数据管道:作为日志预处理工具,过滤后输出到其他系统

注意事项

  • 目前只支持 JSON 格式,如果是纯文本日志会原样输出
  • 模板语法基于 Handlebars,需要花时间熟悉
  • 许可证是 WTFPL(Do What The F*ck You Want To),非常宽松

写在最后

fblog 的代码只有几千行,但解决了一个很实在的问题。在日志基础设施越来越复杂的今天,有时候我们需要的只是一个能把 JSON 变好看的简单工具。它不追求功能全面,而是把”查看 JSON 日志”这一件事做好。

如果你在终端里经常和 JSON 日志打交道,值得一试。

属性内容
仓库https://github.com/brocode/fblog
许可证WTFPL
语言Rust
维护者@brocode