Was macht cli-anything-nslogger?
Eine vollständige CLI-Werkzeugkiste für NSLogger, den macOS-Protokollbetrachter für iOS/macOS-Apps.
Installation
cd nslogger/agent-harness
pip install -e .
# Überprüfen
cli-anything-nslogger --help
Befehlsreferenz
generate – Beispiel-Dateien zum Testen erstellen
cli-anything-nslogger generate sample.rawnsloggerdata --count 50
read – Nachrichten aus einer Datei anzeigen
# Alle Nachrichten
cli-anything-nslogger read session.rawnsloggerdata
# Nur Fehler (Stufe 0)
cli-anything-nslogger read session.rawnsloggerdata --level 0
# Nach Tag und Textsuche filtern
cli-anything-nslogger read session.rawnsloggerdata --tag Network --search "timeout"
# Erste 20 Nachrichten als JSON
cli-anything-nslogger read session.rawnsloggerdata --limit 20 --json
filter – Erweiterte Filterung
# Nur Fehler und Warnungen
cli-anything-nslogger filter session.rawnsloggerdata --level 1
# Nach Tag
cli-anything-nslogger filter session.rawnsloggerdata --tag Auth --tag Network
# Regex-Suche
cli-anything-nslogger filter session.rawnsloggerdata --regex "(timeout|failed|error)"
# Nach Thread
cli-anything-nslogger filter session.rawnsloggerdata --thread "main"
# JSON-Ausgabe
cli-anything-nslogger filter session.rawnsloggerdata --level 0 --json
export – In Text/JSON/CSV exportieren
# JSON auf stdout
cli-anything-nslogger export session.rawnsloggerdata --format json
# CSV in Datei
cli-anything-nslogger export session.rawnsloggerdata --format csv --output logs.csv
# Gefilterter Textexport
cli-anything-nslogger export session.rawnsloggerdata --format text --level 1 --tag Network
stats – Zusammenfassende Statistiken
# Menschenlesbare Zusammenfassung
cli-anything-nslogger stats session.rawnsloggerdata
# JSON für Agentenverarbeitung
cli-anything-nslogger stats session.rawnsloggerdata --json
JSON-Ausgabeform:
{
"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 – Live-Verbindungen empfangen
# Entspricht dem NSLogger.app GUI Bonjour-Verhalten für iOS-Autoerkennung
cli-anything-nslogger listen --bonjour --name bazinga --debug
# Live-Protokolle in Textdatei spiegeln, während stdout gedruckt wird
cli-anything-nslogger listen --bonjour --name bazinga --output app.log
# Maschinenlesbares JSON Lines schreiben
cli-anything-nslogger listen --bonjour --name bazinga --output app.jsonl --output-format jsonl
# Direkter TCP/TLS-Modus für manuell konfigurierte Clients
cli-anything-nslogger listen --port 50000 --ssl --debug
# Nur Fehler anzeigen, Ausgabe als JSON-Stream
cli-anything-nslogger listen --bonjour --name bazinga --level 0 --json
# Ausführen bis Strg+C
cli-anything-nslogger listen --bonjour --name bazinga
Verwenden Sie zuerst den Bonjour-Modus für iOS-Apps, da er dem Desktop-NSLogger-GUI entspricht:
die CLI veröffentlicht einen nativen macOS NetService mit _nslogger-ssl._tcp und
akzeptiert TLS-NSLogger-Frames. Verwenden Sie direkten TCP/TLS nur, wenn die App manuell
mit dem Mac-Host und Port konfiguriert ist.
repl – Interaktive Befehls-REPL
cli-anything-nslogger repl session.rawnsloggerdata
# Oder starten Sie es durch Ausführen von cli-anything-nslogger ohne Unterbefehl.
Protokollierungsstufen
| Wert | Name | Verwendung für |
|---|---|---|
| 0 | ERROR | Nicht behebbare Fehler |
| 1 | WARNING | Behebbare Probleme |
| 2 | INFO | Normalbetrieb |
| 3 | DEBUG | Entwicklerdetails |
| 4 | VERBOSE | Ablaufverfolgung auf Rauschebene |
JSON-Nachrichtenformat
{
"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"
}
Beispiele für Agenten-Workflows
# 1. Eine aufgenommene Absturz-Sitzung untersuchen
cli-anything-nslogger stats crash.rawnsloggerdata --json
# 2. Alle Fehler in den 5 Minuten vor dem Absturz finden
cli-anything-nslogger filter crash.rawnsloggerdata --level 0 --json
# 3. Nur Netzwerkfehler abrufen
cli-anything-nslogger filter crash.rawnsloggerdata --tag Network --regex "fail|timeout|error" --json
# 4. Vollständiges Protokoll für Offline-Analyse exportieren
cli-anything-nslogger export crash.rawnsloggerdata --format json --output crash_log.json
# 5. Eine iOS-App live überwachen und lokale Kopie behalten
cli-anything-nslogger listen --bonjour --name bazinga --output app.log --debug