Ios Android Logs

cap-go/capgo-skills/skills/ios-android-logs

作者 cap-go2cfb277a1488无许可证72 个星标收录于 2026年10月8日更新于 2026年10月8日仓库今天更新

Guide to accessing device logs on iOS and Android for Capacitor apps. Covers command-line tools, GUI applications, filtering, and real-time streaming. Use this skill when users need to view device logs for debugging.

AI 生成的概览

面向 Capacitor 应用的 iOS 与 Android 设备日志查看与过滤指南。

功能
该技能是一份关于在 iOS 和 Android 上访问设备日志的参考指南,主要面向 Capacitor 应用。它介绍了 xcrun devicectl、xcrun simctl、adb logcat 等命令行工具,以及 Console.app 和 Android Studio Logcat 等图形界面方式,并涵盖过滤、日志级别、崩溃日志获取和实时流式输出。此外还包含故障排查步骤、最佳实践,以及以编程方式获取日志的 MCP 调用示例。
适用场景
当你需要查看设备日志、调试崩溃、按应用或包名过滤日志,或实时流式查看日志时使用。也适用于有人询问如何在 iOS 或 Android 上查看日志的场景。
运行要求
需要可用的 iOS 与 Android 工具链:Xcode 命令行工具(xcrun devicectl、xcrun simctl)和 Android 平台工具(adb),并连接真机或模拟器。文中还提到可选工具,包括 Console.app、Android Studio、Xcode、通过 pip 安装的 pidcat 以及 MCP 工具。该技能不附带脚本,仅为说明文档。

iOS and Android Device Logs

Complete guide to viewing and filtering device logs on iOS and Android.

When to Use This Skill

  • User needs to see device logs
  • User is debugging crashes
  • User wants to filter logs by app
  • User needs real-time log streaming
  • User asks "how to see logs"

Quick Commands

bash
# iOS - Stream logs from connected devicexcrun devicectl device log stream --device <UUID>
# iOS - Stream from simulatorxcrun simctl spawn booted log stream
# Android - Stream all logsadb logcat
# Android - Filter by packageadb logcat --pid=$(adb shell pidof com.yourapp.id)

iOS Logs

Method 1: Console.app (GUI)

  1. Open Console.app (Applications > Utilities)
  2. Select your device in sidebar
  3. Click "Start Streaming"
  4. Use search to filter:
    • By process: process:YourApp
    • By subsystem: subsystem:com.yourapp
    • By message: "error"

Method 2: devicectl (CLI - Recommended)

bash
# List connected devicesxcrun devicectl list devices
# Stream logs from specific devicexcrun devicectl device log stream --device <DEVICE_UUID>
# Stream with predicate filterxcrun devicectl device log stream --device <DEVICE_UUID> \  --predicate 'process == "YourApp"'
# Stream specific log levelsxcrun devicectl device log stream --device <DEVICE_UUID> \  --level error
# Save to filexcrun devicectl device log stream --device <DEVICE_UUID> \  --predicate 'process == "YourApp"' > app_logs.txt

Method 3: simctl for Simulators

bash
# Stream logs from booted simulatorxcrun simctl spawn booted log stream
# Filter by processxcrun simctl spawn booted log stream --predicate 'process == "YourApp"'
# Filter by subsystemxcrun simctl spawn booted log stream --predicate 'subsystem == "com.yourapp"'
# Show only errorsxcrun simctl spawn booted log stream --level error
# Combine filtersxcrun simctl spawn booted log stream \  --predicate 'process == "YourApp" AND messageType == error'

Method 4: Xcode Device Logs

  1. Window > Devices and Simulators
  2. Select device
  3. Click "Open Console"
  4. Or: View device logs for crash reports

iOS Log Predicate Examples

bash
# Process name--predicate 'process == "YourApp"'
# Contains text--predicate 'eventMessage contains "error"'
# Subsystem--predicate 'subsystem == "com.yourapp.plugin"'
# Category--predicate 'category == "network"'
# Log level--predicate 'messageType == error'
# Combined--predicate 'process == "YourApp" AND messageType >= error'
# Time-based (last 5 minutes)--predicate 'timestamp > now - 5m'

iOS Log Levels

LevelDescription
defaultDefault messages
infoInformational
debugDebug (hidden by default)
errorError conditions
faultFault/critical

Android Logs

Method 1: adb logcat (CLI)

bash
# Basic log streamadb logcat
# Clear logs first, then streamadb logcat -c && adb logcat
# Filter by tagadb logcat -s MyTag:D
# Filter by priorityadb logcat *:E  # Only errors and above
# Filter by package nameadb logcat --pid=$(adb shell pidof com.yourapp.id)
# Filter by multiple tagsadb logcat -s "MyPlugin:D" "Capacitor:I"
# Save to fileadb logcat > logs.txt
# Save to file with timestampadb logcat -v time > logs.txt

Method 2: Android Studio Logcat (GUI)

  1. View > Tool Windows > Logcat
  2. Use filter dropdown:
    • Package: package:com.yourapp
    • Tag: tag:MyPlugin
    • Level: level:error
  3. Create saved filters for quick access

Method 3: pidcat (Better CLI Tool)

bash
# Install pidcatpip install pidcat
# Stream logs for packagepidcat com.yourapp.id
# With tag filterpidcat -t MyPlugin com.yourapp.id

Android Log Priority Levels

LetterPriority
VVerbose
DDebug
IInfo
WWarn
EError
FFatal
SSilent

adb logcat Format Options

bash
# Different output formatsadb logcat -v brief     # Defaultadb logcat -v process   # PID onlyadb logcat -v tag       # Tag onlyadb logcat -v time      # With timestampadb logcat -v threadtime # With thread and timeadb logcat -v long      # All metadata
# Colorized outputadb logcat -v color
# Show recent logs (last N lines)adb logcat -d -t 100
# Show logs since timestampadb logcat -v time -T "01-25 10:00:00.000"

Common Android Filters

bash
# Capacitor core logsadb logcat -s "Capacitor:*"
# Plugin-specific logsadb logcat -s "CapacitorNativeBiometric:*"
# WebView logs (JavaScript console)adb logcat -s "chromium:*"
# JavaScript errorsadb logcat | grep -i "js error\|uncaught"
# Crash logsadb logcat | grep -iE "fatal|crash|exception"
# Network logsadb logcat -s "OkHttp:*" "NetworkSecurityConfig:*"

Viewing Crash Logs

iOS Crash Logs

bash
# Copy crash logs from devicexcrun devicectl device copy crashlog --device <UUID> ./crashes/
# View in Console.app# User Diagnostics Reports section
# Or find at:# Device: Settings > Privacy > Analytics & Improvements > Analytics Data# Mac: ~/Library/Logs/DiagnosticReports/

Android Crash Logs

bash
# Get tombstone (native crash)adb shell cat /data/tombstones/tombstone_00
# Get ANR tracesadb pull /data/anr/traces.txt
# Get bugreport (comprehensive)adb bugreport > bugreport.zip

MCP Integration

Use MCP tools to fetch logs programmatically:

typescript
// Example MCP tool for fetching iOS logsconst logs = await mcp.ios.streamLogs({  device: 'booted',  predicate: 'process == "YourApp"',  level: 'debug',});
// Example MCP tool for Android logsconst androidLogs = await mcp.android.logcat({  package: 'com.yourapp.id',  level: 'D',});

Log Parsing Tips

Extract JavaScript Errors

bash
# iOS - JavaScript console logsxcrun simctl spawn booted log stream \  --predicate 'eventMessage contains "JS:"'
# Android - WebView consoleadb logcat chromium:I *:S | grep "console"

Filter Network Requests

bash
# iOSxcrun simctl spawn booted log stream \  --predicate 'subsystem == "com.apple.network"'
# Androidadb logcat -s "NetworkSecurityConfig:*" "OkHttp:*"

Monitor Memory

bash
# iOS - Memory pressurexcrun simctl spawn booted log stream \  --predicate 'eventMessage contains "memory"'
# Android - Memory infoadb shell dumpsys meminfo com.yourapp.id

Troubleshooting

Issue: No Logs Showing

iOS:

  • Ensure device is trusted: Xcode > Window > Devices
  • Try restarting log stream
  • Check Console.app filters

Android:

  • Enable USB debugging
  • Run adb devices to verify connection
  • Try adb kill-server && adb start-server

Issue: Too Many Logs

Use filters:

bash
# iOS - Only your app--predicate 'process == "YourApp" AND messageType >= info'
# Android - Only your packageadb logcat --pid=$(adb shell pidof com.yourapp.id)

Issue: Missing Debug Logs

iOS: Debug logs are hidden by default

bash
# Enable debug logsxcrun simctl spawn booted log stream --level debug

Android: Ensure log level is set correctly

kotlin
Log.d("Tag", "Debug message")  // D level

Best Practices

  1. Use structured logging - Include context in log messages
  2. Add timestamps - Helps correlate events
  3. Filter early - Don't stream all logs
  4. Save important logs - Redirect to file for later analysis
  5. Use log levels appropriately - Debug for dev, error for production

Resources

来源与署名

来源:cap-go/capgo-skills位于skills/ios-android-logs提交2cfb277

许可证: 无许可证

内容归原作者所有。SourceWeft 从公开仓库中收录这些内容。

举报或申请下架