fblog: 终端里的结构化日志查看利器
在微服务和容器化时代,应用程序普遍采用结构化日志输出(JSON 格式)。这虽然便于机器解析,但人工阅读时却痛苦不堪——所有内容挤在一行,关键信息淹没在引号和转义字符中。
今天介绍的 fblog 就是来解决这个问题的。这是一个用 Rust 编写的轻量级命令行工具,能把 JSON 日志转换成人类可读的格式。
项目简介
- 仓库: brocode/fblog
- 语言: Rust
- Stars: 558
- 许可证: WTFPL(Do What The F*ck You Want To Public License)
fblog 的核心功能很简单:读取 JSON 格式的日志流,提取关键字段(如时间戳、日志级别、消息内容),然后以带颜色的表格形式输出到终端。
安装
# macOS/Linux 使用 Homebrew
brew install fblog
# 或使用 cargo
cargo install fblog
# 或直接下载二进制文件
https://github.com/brocode/fblog/releases
使用示例
假设你的应用输出这样的日志:
{"timestamp": "2026-04-02T15:30:00Z", "level": "INFO", "message": "Server started", "port": 8080}
{"timestamp": "2026-04-02T15:31:12Z", "level": "ERROR", "message": "Database connection failed", "error": "timeout"}
直接查看简直是折磨。但用 fblog 处理:
cat app.log | fblog
输出会变成:

时间戳、日志级别、消息内容被清晰分隔,不同级别用不同颜色标注(INFO 绿色、ERROR 红色等),一眼就能定位问题。
进阶用法
过滤特定字段
# 只显示 ERROR 级别以上的日志
cat app.log | fblog -l ERROR
# 按自定义字段过滤
cat app.log | fblog -f 'service=api'
自定义输出格式
# 指定时间字段名(如果你的日志用不同字段名)
cat app.log | fblog --time-field="@timestamp"
# 显示所有字段(不只是默认的核心字段)
cat app.log | fblog -a
与 Docker/Kubernetes 配合
# 实时查看容器日志
docker logs -f myapp | fblog
# 查看 Kubernetes Pod 日志
kubectl logs -f pod/myapp | fblog
为什么选 fblog?
| 特性 | fblog | 其他工具 |
|---|---|---|
| 体积 | 单个静态二进制文件 (~2MB) | 通常依赖较多 |
| 速度 | Rust 实现,处理大日志飞快 | Python/Node 工具相对较慢 |
| 配置 | 几乎零配置,开箱即用 | 很多需要写配置文件 |
| 兼容性 | 支持任意 JSON 日志格式 | 有些只支持特定格式 |
同类工具对比
如果你只需要一个简单、快速、无依赖的 JSON 日志查看工具,fblog 是最佳选择。
总结
fblog 完美诠释了 Unix 哲学:“做一件事,并把它做好”。它不试图成为全能的日志分析平台,而是专注于解决”JSON 日志可读性”这一个问题,并且解决得非常漂亮。
对于经常需要查看容器日志、微服务日志的开发者来说,把 | fblog 加入你的工作流,能节省大量时间和眼力。