json-log-viewer:217⭐のターミナル JSON ログインタラクティブビューアー
json-log-viewer:217⭐のターミナル JSON ログインタラクティブビューアー
マイクロサービスとコンテナ化の時代、ログ出力はすでに純テキストから構造化 JSON 形式へと移行している。この形式はプログラムでの解析には便利だが、ターミナルで何千行もの入れ子になった JSON ログを確認する必要があるとき、体験は悲惨なものになる。今日紹介する json-log-viewer は、まさにこの痛みを解消するために生まれたニッチツールだ。
プロジェクト概要
| 属性 | 内容 |
|---|---|
| GitHub | hedhyw/json-log-viewer |
| Stars | 217 |
| 言語 | Go |
| 特徴 | ターミナルネイティブ、インタラクティブフィルタリング、折りたたみ可能なフィールド |
| 最終更新 | 2週間前 |
解決する問題
現代のアプリケーションのログは通常、このような形式になる:
{"timestamp":"2026-03-19T10:23:45Z","level":"error","service":"payment-api","trace_id":"abc123","message":"database connection timeout","meta":{"retry_count":3,"endpoint":"/v1/charge","latency_ms":5234}}
1行のログが画面の半分を占め、重要な情報が入れ子構造に埋もれてしまう。従来の cat や tail、jq でも処理は可能だが、インタラクティブ性に欠けるか、複雑なクエリ構文を覚える必要がある。
json-log-viewer は Vim 風のインタラクティブインターフェースを提供し、ターミナル上でファイルを閲覧するようにログを閲覧でき、JSON の構造化利点も維持する。
核心機能
1. インタラクティブフィルタリング
l キーでフィルタ入力ボックスを表示。複数のフィルタモードをサポート:
- 完全一致:
level:errorでエラーレベルのログのみ表示 - あいまい検索:
timeoutで該当キーワードを含む行をすべてマッチ - 正規表現:
/payment|charge/で複数キーワードを同時マッチ - フィールドフィルタ:
latency_ms>5000で高遅延リクエストをフィルタリング
2. フィールド折りたたみとハイライト
- JSON 階層を自動認識し、入れ子オブジェクトを折りたたみ可能
- 異なるログレベル(debug/info/warn/error)を色分け
- タイムスタンプ、trace_id などの一般的なフィールドを自動整形
3. 複数の入力方式
# ファイルを直接読み込み
jlv app.log
# パイプ入力
cat app.log | jlv
# リアルタイム追跡
tail -f app.log | jlv
# 圧縮ファイル対応
jlv app.log.gz
4. カスタムテーマ
複数の配色テーマを内蔵。YAML 設定ファイルでのカスタマイズも可能:
theme:
background: "#1e1e1e"
level_error: "#ff6b6b"
level_warn: "#feca57"
timestamp: "#48dbfb"
類似ツール比較
| ツール | Stars | 特徴 | 適用シナリオ |
|---|---|---|---|
| jq | 30k+ | 強力なコマンドライン JSON プロセッサ | スクリプト処理、データ変換 |
| fx | 20k+ | インタラクティブ JSON ビューアー | 一般的な JSON ファイル閲覧 |
| lnav | 7k+ | 汎用ログファイルビューアー | 非構造化ログ分析 |
| json-log-viewer | 217 | 構造化ログ専用設計 | JSON ログのリアルタイム表示とフィルタリング |
jq や fx は静的 JSON ファイルの処理に適しているが、json-log-viewer はストリーミングログシナリオ向けだ。継続的な監視や迅速な問題解決が必要な場合、リアルタイムフィルタリングとログレベルの色分けがより実用的。
適用シナリオ
推奨:
- コンテナ化アプリケーションのログ調査(Docker/Kubernetes)
- マイクロサービスアーキテクチャでの分散トレーシング
- 特定のエラータイプを迅速にフィルタリングする必要がある場合
- ブラウザとターミナルを行き来したくないバックエンド開発者
あまり適さない:
- 複雑な統計集計が必要な分析タスク(ELK や Grafana に任せる)
- 純テキスト形式の従来のログ(lnav が適している)
- Windows ネイティブ環境(現在 macOS と Linux のみサポート)
クイックスタート
# macOS / Linux
go install github.com/hedhyw/json-log-viewer@latest
# またはプリコンパイル済みバイナリをダウンロード
curl -sL https://github.com/hedhyw/json-log-viewer/releases/latest/download/jlv-linux-amd64 -o jlv
chmod +x jlv
sudo mv jlv /usr/local/bin/
# 基本的な使い方
jlv /var/log/myapp.log
注意事項
- 現在 Windows はサポートされていない(ただし WSL は使用可能)
- 超大容量ファイル(GB レベル)はインデックス作成に時間がかかる
- フィルタ式の構文はシンプルで、複雑な複合条件には非対応
まとめ
json-log-viewer は、的を射たポジショニングの開発者ツールだ。jq のように機能が全面的というわけでも、ELK のように強力というわけでもないが、「ターミナルで JSON ログを迅速に確認する」という特定シナリオでは、代替のないインタラクティブ体験を提供する。217 の star の背後にあるのは、小さく美しいソリューションだ。Docker logs を頻繁に扱うなら、試す価値がある。
| 属性 | 内容 |
|---|---|
| リポジトリ | https://github.com/hedhyw/json-log-viewer |
| ライセンス | MIT |
| 言語 | Go |
| 保守者 | @hedhyw |