iOSアプリ開発で実機のログに filter をかける

アプリ起動中のログであれば Xcode のコンソールから確認できますが、 アプリを起動したり終了させたときのログを確認したい場合には、Xcode のコンソールでは確認できないので実機のログを確認する必要があるかと思います。

このとき Xcodeツールバーの Window -> Devices から実機を選択すれば Xcode 上でログを確認することができますが、この方法だとログに対して find はできるのですが、 filter はかけられないので結構不便だったりします。

そこで、なんとか filter をかける方法がないかなと思って探してみたら方法がありました〜

libmobiledevice

www.libimobiledevice.org

こちらを使うことでターミナルでログを確認できるので、それを grep すればよいということです。

Homebrew から入れることができるのですが、 iOS10 の実機のログを確認する場合には、以下のように HEAD を指定して install しないといけないようです。

$ brew install -v --HEAD --fresh --build-from-source libimobiledevice

refs:

[SOLVED] Unable to start syslog with iOS 10 on Windows · Issue #325 · libimobiledevice/libimobiledevice · GitHub

使い方

$ idevicesyslog -u 実機のUUID

でターミナルにログを出力することができます。
もちろん UUID を確認するコマンドもあります。

$ idevice_id -l

以下のように出力されるログに対して grep すれば filter をかけることができます!

$ idevice_id -l | xargs idevicesyslog -u | grep hogehoge

これで快適なデバッグライフを送ることができそうです!