O que cli-anything-nslogger faz?
Um harness de CLI completo para o NSLogger, o visualizador de logs macOS para aplicativos iOS/macOS.
Instalação
cd nslogger/agent-harness
pip install -e .
# Verificar
cli-anything-nslogger --help
Referência de Comandos
generate — Criar arquivos de amostra para teste
cli-anything-nslogger generate sample.rawnsloggerdata --count 50
read — Exibir mensagens de um arquivo
# Todas as mensagens
cli-anything-nslogger read session.rawnsloggerdata
# Apenas erros (nível 0)
cli-anything-nslogger read session.rawnsloggerdata --level 0
# Filtrar por tag e busca textual
cli-anything-nslogger read session.rawnsloggerdata --tag Network --search "timeout"
# Primeiras 20 mensagens como JSON
cli-anything-nslogger read session.rawnsloggerdata --limit 20 --json
filter — Filtragem avançada
# Apenas erros e avisos
cli-anything-nslogger filter session.rawnsloggerdata --level 1
# Por tag
cli-anything-nslogger filter session.rawnsloggerdata --tag Auth --tag Network
# Busca com regex
cli-anything-nslogger filter session.rawnsloggerdata --regex "(timeout|failed|error)"
# Por thread
cli-anything-nslogger filter session.rawnsloggerdata --thread "main"
# Saída JSON
cli-anything-nslogger filter session.rawnsloggerdata --level 0 --json
export — Exportar para texto/JSON/CSV
# JSON para stdout
cli-anything-nslogger export session.rawnsloggerdata --format json
# CSV para arquivo
cli-anything-nslogger export session.rawnsloggerdata --format csv --output logs.csv
# Exportação filtrada em texto
cli-anything-nslogger export session.rawnsloggerdata --format text --level 1 --tag Network
stats — Estatísticas resumidas
# Resumo legível para humanos
cli-anything-nslogger stats session.rawnsloggerdata
# JSON para consumo por agente
cli-anything-nslogger stats session.rawnsloggerdata --json
Formato da saída 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 — Receber conexões ao vivo
# Corresponde ao comportamento Bonjour da GUI do NSLogger.app para descoberta automática iOS
cli-anything-nslogger listen --bonjour --name bazinga --debug
# Espelhar logs ao vivo para um arquivo de texto mantendo a saída no stdout
cli-anything-nslogger listen --bonjour --name bazinga --output app.log
# Escrever linhas JSON legíveis por máquina
cli-anything-nslogger listen --bonjour --name bazinga --output app.jsonl --output-format jsonl
# Modo TCP/TLS direto para clientes configurados manualmente
cli-anything-nslogger listen --port 50000 --ssl --debug
# Mostrar apenas erros durante a escuta, saída como fluxo JSON
cli-anything-nslogger listen --bonjour --name bazinga --level 0 --json
# Executar até Ctrl-C
cli-anything-nslogger listen --bonjour --name bazinga
Use o modo Bonjour primeiro para aplicativos iOS, pois ele corresponde à GUI desktop do NSLogger:
a CLI publica um NetService nativo do macOS com _nslogger-ssl._tcp e
aceita frames TLS NSLogger. Use TCP/TLS direto apenas quando o aplicativo estiver configurado
manualmente com o host e porta do Mac.
repl — REPL de Comandos Interativos
cli-anything-nslogger repl session.rawnsloggerdata
# Ou inicie executando cli-anything-nslogger sem subcomando.
Níveis de Log
| Valor | Nome | Uso |
|---|---|---|
| 0 | ERROR | Falhas irrecuperáveis |
| 1 | WARNING | Problemas recuperáveis |
| 2 | INFO | Operação normal |
| 3 | DEBUG | Detalhes de desenvolvimento |
| 4 | VERBOSE | Ruído de rastreamento |
Formato da Mensagem 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"
}
Exemplos de Fluxo de Trabalho para Agentes
# 1. Inspecionar uma sessão de crash capturada
cli-anything-nslogger stats crash.rawnsloggerdata --json
# 2. Encontrar todos os erros nos 5 minutos antes do crash
cli-anything-nslogger filter crash.rawnsloggerdata --level 0 --json
# 3. Obter apenas falhas de rede
cli-anything-nslogger filter crash.rawnsloggerdata --tag Network --regex "fail|timeout|error" --json
# 4. Exportar log completo para análise offline
cli-anything-nslogger export crash.rawnsloggerdata --format json --output crash_log.json
# 5. Monitorar um aplicativo iOS ao vivo e manter uma cópia local
cli-anything-nslogger listen --bonjour --name bazinga --output app.log --debug