Que fait cli-anything-nslogger ?
Un CLI complet pour NSLogger, le visualiseur de journaux macOS pour applications iOS/macOS.
Installation
cd nslogger/agent-harness
pip install -e .
# Vérification
cli-anything-nslogger --help
Référence des commandes
generate — Créer des fichiers d'exemple pour les tests
cli-anything-nslogger generate sample.rawnsloggerdata --count 50
read — Afficher les messages d'un fichier
# Tous les messages
cli-anything-nslogger read session.rawnsloggerdata
# Erreurs uniquement (niveau 0)
cli-anything-nslogger read session.rawnsloggerdata --level 0
# Filtrer par étiquette et recherche textuelle
cli-anything-nslogger read session.rawnsloggerdata --tag Network --search "timeout"
# Les 20 premiers messages au format JSON
cli-anything-nslogger read session.rawnsloggerdata --limit 20 --json
filter — Filtrage avancé
# Erreurs et avertissements uniquement
cli-anything-nslogger filter session.rawnsloggerdata --level 1
# Par étiquette
cli-anything-nslogger filter session.rawnsloggerdata --tag Auth --tag Network
# Recherche par expression régulière
cli-anything-nslogger filter session.rawnsloggerdata --regex "(timeout|failed|error)"
# Par thread
cli-anything-nslogger filter session.rawnsloggerdata --thread "main"
# Sortie JSON
cli-anything-nslogger filter session.rawnsloggerdata --level 0 --json
export — Exporter en texte/JSON/CSV
# JSON vers la sortie standard
cli-anything-nslogger export session.rawnsloggerdata --format json
# CSV vers un fichier
cli-anything-nslogger export session.rawnsloggerdata --format csv --output logs.csv
# Export texte filtré
cli-anything-nslogger export session.rawnsloggerdata --format text --level 1 --tag Network
stats — Statistiques récapitulatives
# Résumé lisible par un humain
cli-anything-nslogger stats session.rawnsloggerdata
# JSON pour consommation par un agent
cli-anything-nslogger stats session.rawnsloggerdata --json
Forme de la sortie 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 — Recevoir des connexions en direct
# Correspond au comportement Bonjour de l'interface graphique NSLogger.app pour la découverte automatique iOS
cli-anything-nslogger listen --bonjour --name bazinga --debug
# Miroir des journaux en direct vers un fichier texte tout en affichant sur la sortie standard
cli-anything-nslogger listen --bonjour --name bazinga --output app.log
# Écrire des lignes JSON lisibles par une machine
cli-anything-nslogger listen --bonjour --name bazinga --output app.jsonl --output-format jsonl
# Mode TCP/TLS direct pour clients configurés manuellement
cli-anything-nslogger listen --port 50000 --ssl --debug
# Afficher uniquement les erreurs à l'écoute, sortie en flux JSON
cli-anything-nslogger listen --bonjour --name bazinga --level 0 --json
# Exécuter jusqu'à Ctrl-C
cli-anything-nslogger listen --bonjour --name bazinga
Utilisez d'abord le mode Bonjour pour les applications iOS, car il correspond à l'interface graphique NSLogger de bureau :
le CLI publie un NetService macOS natif avec _nslogger-ssl._tcp et
accepte les trames TLS NSLogger. Utilisez le mode TCP/TLS direct uniquement lorsque l'application est configurée
manuellement avec l'hôte et le port Mac.
repl — REPL de commande interactif
cli-anything-nslogger repl session.rawnsloggerdata
# Ou lancez-le en exécutant cli-anything-nslogger sans sous-commande.
Niveaux de journalisation
| Valeur | Nom | Utilisation pour |
|---|---|---|
| 0 | ERROR | Défaillances irrécupérables |
| 1 | WARNING | Problèmes récupérables |
| 2 | INFO | Fonctionnement normal |
| 3 | DEBUG | Détails développeur |
| 4 | VERBOSE | Bruit de suivi de trace |
Forme du message 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"
}
Exemples de workflows pour agent
# 1. Inspecter une session de plantage capturée
cli-anything-nslogger stats crash.rawnsloggerdata --json
# 2. Trouver toutes les erreurs dans les 5 minutes avant le plantage
cli-anything-nslogger filter crash.rawnsloggerdata --level 0 --json
# 3. Obtenir uniquement les échecs réseau
cli-anything-nslogger filter crash.rawnsloggerdata --tag Network --regex "fail|timeout|error" --json
# 4. Exporter le journal complet pour analyse hors ligne
cli-anything-nslogger export crash.rawnsloggerdata --format json --output crash_log.json
# 5. Surveiller une application iOS en direct et conserver une copie locale
cli-anything-nslogger listen --bonjour --name bazinga --output app.log --debug