fblog: ターミナルで読みやすい構造化ログビューアー
マイクロサービスとコンテナ化の時代、アプリケーションは構造化ログ(JSON形式)を出力するようになりました。これは機械的に解析するには便利ですが、人間が読むのは苦痛です—すべてが1行に詰め込まれ、重要な情報は引用符やエスケープ文字の中に埋もれてしまいます。
今日紹介する 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ログ形式をサポート | 一部は特定の形式のみサポート |
類似ツールとの比較
- jq: 強力なJSONプロセッサーですが、学習曲線が急で、ログを素早く確認するには不向き
- hl: 別のRust製ログビューアー。機能は豊富ですが重い(3031 stars)
- lnav: 複数のログ形式をサポートしますが、サイズが大きい
シンプル、高速、依存関係なしのJSONログビューアーが必要な場合、fblogが最適な選択です。
まとめ
fblogはUnix哲学を完璧に体現しています:「一つのことを行い、それをうまくやる」。すべての機能を持つログ分析プラットフォームになろうとはせず、「JSONログの可読性」という一つの問題に焦点を当て、それを見事に解決しています。
コンテナログやマイクロサービスログを頻繁に確認する必要がある開発者にとって、ワークフローに | fblog を追加することで、多くの時間と目の疲労を節約できます。
プロジェクトリンク: https://github.com/brocode/fblog