cli-anything-nslogger は何をしますか?
iOS/macOSアプリ向けのログビューアNSLogger用の完全なCLIハーネスです。
インストール
cd nslogger/agent-harness
pip install -e .
# 確認
cli-anything-nslogger --help
コマンドリファレンス
generate — テスト用のサンプルファイルを作成
cli-anything-nslogger generate sample.rawnsloggerdata --count 50
read — ファイルからメッセージを表示
# すべてのメッセージ
cli-anything-nslogger read session.rawnsloggerdata
# エラーのみ(レベル0)
cli-anything-nslogger read session.rawnsloggerdata --level 0
# タグとテキスト検索でフィルタリング
cli-anything-nslogger read session.rawnsloggerdata --tag Network --search "timeout"
# 最初の20メッセージをJSONで出力
cli-anything-nslogger read session.rawnsloggerdata --limit 20 --json
filter — 高度なフィルタリング
# エラーと警告のみ
cli-anything-nslogger filter session.rawnsloggerdata --level 1
# タグでフィルタリング
cli-anything-nslogger filter session.rawnsloggerdata --tag Auth --tag Network
# 正規表現検索
cli-anything-nslogger filter session.rawnsloggerdata --regex "(timeout|failed|error)"
# スレッドでフィルタリング
cli-anything-nslogger filter session.rawnsloggerdata --thread "main"
# JSON出力
cli-anything-nslogger filter session.rawnsloggerdata --level 0 --json
export — テキスト/JSON/CSVにエクスポート
# JSONを標準出力へ
cli-anything-nslogger export session.rawnsloggerdata --format json
# CSVをファイルへ
cli-anything-nslogger export session.rawnsloggerdata --format csv --output logs.csv
# フィルタリングしたテキストエクスポート
cli-anything-nslogger export session.rawnsloggerdata --format text --level 1 --tag Network
stats — 概要統計
# 人間が読めるサマリー
cli-anything-nslogger stats session.rawnsloggerdata
# エージェント処理用のJSON
cli-anything-nslogger stats session.rawnsloggerdata --json
JSON出力の形状:
{
"total": 342,
"by_level": {"ERROR": 12, "WARNING": 34, "INFO": 200, "DEBUG": 96},
"by_tag": {"Network": 89, "Auth": 45, "UI": 120},
"by_thread": {"main": 200, "bg-queue": 142},
"by_type": {"text": 340, "client_info": 1, "disconnect": 1},
"clients": ["MyApp"],
"first_timestamp": "2024-01-01T10:00:00+00:00",
"last_timestamp": "2024-01-01T10:05:30+00:00",
"duration_seconds": 330.0
}
listen — ライブ接続を受信
# iOSの自動検出に対応するため、NSLogger.app GUIのBonjour動作と一致させる
cli-anything-nslogger listen --bonjour --name bazinga --debug
# ライブログをテキストファイルにミラーリングしつつ標準出力にも表示
cli-anything-nslogger listen --bonjour --name bazinga --output app.log
# 機械可読なJSON Lines形式で書き出し
cli-anything-nslogger listen --bonjour --name bazinga --output app.jsonl --output-format jsonl
# 手動設定クライアント向けの直接TCP/TLSモード
cli-anything-nslogger listen --port 50000 --ssl --debug
# リスニング中にエラーのみ表示、JSONストリームとして出力
cli-anything-nslogger listen --bonjour --name bazinga --level 0 --json
# Ctrl-Cまで実行
cli-anything-nslogger listen --bonjour --name bazinga
iOSアプリにはBonjourモードを最初に使用してください。これはデスクトップのNSLogger GUIと一致するためです。
CLIはネイティブmacOSのNetServiceを_nslogger-ssl._tcpで公開し、TLS NSLoggerフレームを受け入れます。
アプリがMacのホストとポートを手動設定している場合にのみ、直接TCP/TLSを使用してください。
repl — 対話型コマンドREPL
cli-anything-nslogger repl session.rawnsloggerdata
# またはサブコマンドなしでcli-anything-nsloggerを実行しても起動します。
ログレベル
| 値 | 名前 | 用途 |
|---|---|---|
| 0 | ERROR | 復旧不可能な障害 |
| 1 | WARNING | 復旧可能な問題 |
| 2 | INFO | 通常動作 |
| 3 | DEBUG | 開発者向け詳細 |
| 4 | VERBOSE | トレースレベルのノイズ |
メッセージJSON形状
{
"sequence": 42,
"timestamp": "2024-01-01T10:01:23+00:00",
"timestamp_ms": 456,
"thread_id": "main",
"tag": "Network",
"level": 0,
"level_name": "ERROR",
"type": "text",
"text": "Connection timed out after 30s",
"image_width": 0,
"image_height": 0,
"client_name": "MyApp",
"client_version": "2.1.0",
"os_name": "iOS",
"os_version": "17.0",
"machine": "iPhone15,2"
}
エージェントワークフロー例
# 1. キャプチャされたクラッシュセッションを調査
cli-anything-nslogger stats crash.rawnsloggerdata --json
# 2. クラッシュ前5分間のすべてのエラーを見つける
cli-anything-nslogger filter crash.rawnsloggerdata --level 0 --json
# 3. ネットワーク障害のみ取得
cli-anything-nslogger filter crash.rawnsloggerdata --tag Network --regex "fail|timeout|error" --json
# 4. オフライン分析のために完全なログをエクスポート
cli-anything-nslogger export crash.rawnsloggerdata --format json --output crash_log.json
# 5. iOSアプリをライブ監視し、ローカルコピーを保持
cli-anything-nslogger listen --bonjour --name bazinga --output app.log --debug