mcpField
I
ios-android-logs

ios-android-logs

github.com/cap-go開発731.3k 回インストール2 週間前に更新
リポジトリ

ios-android-logs について

iOS と Android の Capacitor アプリ開発者向けログ収集ガイドです。適切なログ経路の選択、アプリ出力のフィルタリング、診断情報の保存を扱い、JavaScript、ネイティブログ、クラッシュレポートの確認方法を区別します。

主な機能

  1. 01ログ種別ごとの出力先の特定
  2. 02シミュレーター、端末、アプリログのフィルタリング
  3. 03ログストリームのファイル保存
  4. 04iOS クラッシュレポートと Android 診断情報の収集
  5. 05ログコマンドと端末接続の問題調査

活用シーン

  1. 01Capacitor や JavaScript のログが見えない問題の調査
  2. 02端末からクラッシュや ANR 情報を取得
  3. 03システムログのノイズを抑えてアプリ出力を絞り込む
  4. 04診断用ログの保存と共有

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/cap-go/capgo-skills --skill ios-android-logs

インストール後、Claude Code で/ios-android-logsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

metadata.json
references/
android-logs.md
ios-logs.md

詳細

Capacitor アプリの iOS/Android ログ

必要なメッセージが実際に出力されるログチャネルを選び、アプリに絞り込んでファイルに記録し、診断に引き継ぎます。

使用する場面

次の場合に使用します:

  • デバイス/シミュレーターのログの表示、ストリーミング、フィルタリング、保存方法について質問された場合。
  • iOS/Android で console.log の出力や ⚡️ の Capacitor 行が見つからない場合。
  • デバイスまたはシミュレーターからクラッシュレポート(.ips、tombstone、ANR)を取得する必要がある場合。
  • Logcat または統合ログのノイズが多く、ユーザーが自分のアプリまたはプラグインだけを表示したい場合。
  • ログコマンドが失敗する、または正しく動作しない場合:--level error を指定してもすべて表示される、unable to find utility "devicectl"、Error: Unexpected argument 'log'、adb: no devices/emulators found。

使用しないでください:

  • エラーを解釈してアプリを修正する場合 → debugging-capacitor。
  • 本番環境のクラッシュ/ANR レポート(Sentry、Crashlytics、Datadog)→ capacitor-native-observability。
  • MCP サーバー経由の AI エージェントによるログストリーミング → capacitor-mcp。
  • CPU/メモリのプロファイリング → capacitor-performance。
  • UIScene のライフサイクル移行 → capacitor-uiscene-migration。

Capacitor の出力先(よくある落とし穴)

ソースiOSAndroid
Capacitor ブリッジのメッセージ(⚡️ Loading app at ...、⚡️ To Native ->、エラー)stdout のみ(print)logcat タグ Capacitor および Capacitor/<Sub>
ネイティブ側にミラーリングされた JS の console.log/warn/errorstdout に ⚡️ [log] - ... として出力logcat タグ Capacitor/Console に File: ... - Line N - Msg: ... として出力
JS コンソールの完全な情報(オブジェクト、スタックトレース)Safari Web Inspectorchrome://inspect
os.Logger/NSLog を使用するプラグイン/アプリのコード統合ログ(Console.app、log stream)該当なし
android.util.Log/Capacitor の Logger を使用するプラグインのコード該当なしlogcat
ネイティブクラッシュ.ips クラッシュレポートlogcat の FATAL EXCEPTION とクラッシュバッファ。ネイティブコードの場合は tombstone

影響:

  • iOS では、Console.app と log stream に Capacitor の ⚡️ 行やミラーリングされた JS コンソールは表示されません。Xcode のコンソール、xcrun simctl launch --console-pty、または xcrun devicectl device process launch --console を使用してください。
  • ミラーリングの動作は loggingBehavior(none | debug | production、デフォルトは debug)に従います。production に設定しない限り、Release ビルドでは Capacitor のログは出力されません。
  • iOS のプロセス名は表示名ではなく実行ファイル名です(Capacitor のテンプレートでは App)。process == "App" でフィルタリングしてください。

クイックコマンド

# iOS Simulator: Capacitor + JS console (stdout), relaunching the app
xcrun simctl launch --console-pty --terminate-running-process booted com.example.app

# iOS Simulator: unified log for the app (os_log / NSLog / system messages)
xcrun simctl spawn booted log stream --level debug --predicate 'process == "App"'

# iPhone: install + launch with stdout attached (Xcode 15+ devicectl)
xcrun devicectl list devices
xcrun devicectl device process launch --console --terminate-existing --device <id> com.example.app

# iPhone: unified log snapshot of the last 10 minutes
sudo log collect --device-udid <udid> --last 10m --output /tmp/iphone.logarchive
log show /tmp/iphone.logarchive --predicate 'process == "App"' --info --debug

# Android: only this app (re-run after each app restart, PID changes)
adb logcat --pid="$(adb shell pidof -s com.example.app)"

# Android: Capacitor + JS console only
adb logcat -s Capacitor:V Capacitor/Console:V

# Android: crashes only
adb logcat -b crash

手順

  1. 対象を特定する:シミュレーター/エミュレーターか実機か、Debug か Release か、どのレイヤーがメッセージを出力したかを確認します(上の表を参照)。
  2. 接続を確認する:xcrun simctl list devices booted、xcrun devicectl list devices(デバイスのロック解除、信頼、Developer Mode の有効化が必要)、adb devices -l を実行します。
  3. クリアして再現する:Android では adb logcat -c を実行します。iOS ではアプリを再起動する前にストリームを開始します。
  4. 早い段階でフィルタリングする:まずプロセス/PID で絞り込み、次にサブシステム/タグ、最後にテキストで絞り込みます。フィルタリングしていないシステムログを会話に貼り付けないでください。
  5. 保存する:ユーザーがログを共有する必要がある場合は、ファイル(> app.log、.logarchive、adb bugreport)に保存します。チーム外に共有する前に、トークン、メールアドレス、認証ヘッダーをマスキングしてください。
  6. 引き継ぐ:関連する行を debugging-capacitor に渡し、根本原因の調査を依頼します。

エラー処理

メッセージ修正方法
--level error を指定してもすべてのメッセージが表示されるlog stream --level が認識するのは default、info、debug のみです(上限ではなく、最低レベルを設定します)。--predicate 'messageType == error OR messageType == fault' でエラーを絞り込んでください。
xcrun: error: unable to find utility "devicectl"アクティブな開発者ディレクトリが Command Line Tools になっています。sudo xcode-select -s /Applications/Xcode.app/Contents/Developer を実行してください。
Error: Unexpected argument 'log'(devicectl)devicectl にログをストリーミングするサブコマンドはありません。標準出力には --console を使い、統合ログには Console.app または log collect --device-udid を使ってください。
log collect で権限エラーが発生するsudo を付けて実行してください。デバイスのロックを解除し、信頼する必要があります。
No devices are booted.(simctl)xcrun simctl boot "<device name>" を実行するか、Simulator を開いてください。
adb: no devices/emulators found / unauthorizedUSB デバッグを有効にし、RSA プロンプトを承認して、adb kill-server && adb start-server を実行してください。
adb logcat --pid= ですべてのログまたはエラーが表示されるアプリが実行されておらず、pidof が何も返しませんでした。先にアプリを起動してください。
Android に Capacitor/Console の行が表示されないloggingBehavior: 'none' に設定されているか、デフォルトの debug を使用する Release ビルドです。
JS のログは表示されるが、オブジェクトが [object Object] と出力されるネイティブ側でミラーリングする際に文字列化されます。構造化された出力には WebView インスペクターを使用してください。

検証

  • iOS シミュレーター:--console-pty を付けて起動し、⚡️ Loading app at capacitor://localhost と、テスト用の console.log('log-check') が ⚡️ [log] - log-check として表示されることを確認します。
  • iOS デバイス:devicectl device process launch --console で同様に確認します。
  • Android:adb logcat -s Capacitor/Console:V に Msg: log-check と表示されることを確認します。
  • 統合ログ:プラグインの Logger(subsystem: "com.example.app", category: "test").info("log-check") が、--predicate 'subsystem == "com.example.app"' --level info を指定すると表示されます。

参考資料

関連するトピックを扱う場合にのみ、参考資料を読み込んでください。

ファイル読み込むタイミング
references/ios-logs.md統合ログの述語、Console.app、log collect/log show、devicectl/Xcode を使った iOS クラッシュレポート、プラグインへの os.Logger の追加
references/android-logs.mdlogcat のバッファー/フォーマット/フィルター、Android Studio Logcat のクエリ、ANR、tombstone、bugreport、WebView(chromium)のノイズ

リソース

コメント