マイクロサービスとコンテナ化の時代、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 と組み合わせてリアルタイム監視
  • 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