cli-anything-nslogger은(는) 무엇을 하나요?
NSLogger를 위한 완전한 CLI 도구 모음입니다. NSLogger는 iOS/macOS 앱용 macOS 로그 뷰어입니다.
설치
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을 stdout으로
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
# 실시간 로그를 텍스트 파일에 미러링하면서 stdout에도 출력
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 앱의 경우 데스크탑 NSLogger GUI와 일치하므로 Bonjour 모드를 먼저 사용하세요.
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