From app-automation
iOS/watchOS/macOS 디버그 앱의 os_log 확인 — 실시간 스트리밍, 저장된 로그 조회, 디바이스 목록. "os_log", "로그 확인", "log stream", "log show", "디바이스 로그", "앱 로그", "os log", "콘솔 로그", "실시간 로그", "로그 스트리밍", "디버그 로그", "시뮬레이터 로그" 요청 시 활성화
How this skill is triggered — by the user, by Claude, or both
Slash command
/app-automation:os-logThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<example>
iOS/watchOS/macOS에서 실행 중인 디버그 앱의 os_log를 확인하는 Swift CLI 도구.
macOS log 명령을 래핑하여 실시간 스트리밍, 저장된 로그 조회, 디바이스 목록 기능을 제공합니다.
os-log-cli는 Swift Package로 구성되어 있으며, 최초 사용 시 빌드가 필요합니다.
# 빌드 (최초 1회, 이후 캐시됨)
swift build --package-path plugins/app-automation/scripts/os-log-cli
# 실행
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI <subcommand> [options]
중요:
swift run명령은 프로젝트 루트(/Volumes/eyedisk/develop/oozoofrog/oozoofrog-plugins)에서 실행하세요.
log stream을 래핑합니다. 실행 중인 앱의 os_log를 실시간으로 수집합니다.
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI stream [options]
| 옵션 | 설명 | 기본값 |
|---|---|---|
--subsystem | 서브시스템 필터 (예: com.myapp) | - |
--category | 카테고리 필터 (예: networking) | - |
--level | 로그 레벨 (default/info/debug/error/fault) | - |
--process | 프로세스 이름 또는 PID | - |
--predicate | NSPredicate 원문 필터 | - |
--device | 디바이스 UDID | - |
--timeout | 자동 종료 시간 (초) | 30 |
--max-lines | 최대 수집 줄 수 | 100 |
--format | 출력 형식 (compact/json/verbose) | compact |
주의: --timeout과 --max-lines는 Claude Bash 도구의 2분 타임아웃을 방지하기 위한 안전 장치입니다. 필요 시 값을 조절하세요.
log show를 래핑합니다. 과거 로그를 검색·필터링합니다.
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI show [options]
| 옵션 | 설명 | 예시 |
|---|---|---|
--last | 최근 기간 | 5m, 1h, 2d |
--start | 시작 시각 (ISO8601) | 2024-01-01T00:00:00 |
--end | 종료 시각 (ISO8601) | 2024-01-01T01:00:00 |
--last와--start/--end는 동시 사용 불가.
공통 필터 옵션(--subsystem, --category, --level, --process, --predicate, --device, --format)도 사용 가능.
부팅된 시뮬레이터와 USB 연결 실제 디바이스를 통합 표시합니다.
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI devices [--json]
--json 플래그로 JSON 배열 출력 가능.
사용자가 앱 이름이나 Bundle ID를 알려주면:
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI stream \
--subsystem com.example.myapp --timeout 10 --max-lines 50
크래시나 오류 발생 후:
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI show \
--last 5m --level error --format verbose
NSPredicate 문법으로 세밀한 필터링:
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI show \
--last 1h --predicate 'subsystem == "com.myapp" AND eventMessage CONTAINS "network"'
# 1. 디바이스 목록 확인
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI devices
# 2. 특정 디바이스의 로그 스트리밍
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI stream \
--device <UDID> --subsystem com.myapp
swift run --package-path plugins/app-automation/scripts/os-log-cli OSLogCLI show \
--last 1m --format json | python3 -m json.tool
stream 사용 시 반드시 --timeout과 --max-lines를 적절히 설정 — Bash 도구의 2분 타임아웃 방지stream --timeout 5 --max-lines 20으로 어떤 서브시스템이 활성화되어 있는지 파악--format json은 구조화된 분석에 적합하고, --format verbose는 상세 디버깅에 적합devices 결과에서 --device 옵션에 UDID를 복사하여 특정 디바이스 대상 로그 확인 가능--predicate를 사용할 때는 NSPredicate 문법을 정확히 지켜야 함 — 잘못된 구문은 에러 반환npx claudepluginhub oozoofrog/oozoofrog-plugins --plugin app-automationGuides accessing, filtering, and streaming iOS/Android device logs for Capacitor apps using devicectl, adb logcat, Console.app, and simctl. For debugging crashes and app issues.
Analyzes iOS app crash logs from simulators/devices/TestFlight, symbolicates stack traces with dSYM files using atos, identifies common patterns and root causes.
Manages iOS Simulator devices via xcrun simctl for app installation, push notifications, location simulation, screenshots, and log streaming.