実機のログをコンソール(ターミナル)から見る
3回ほどハマったのでメモ。
NSLog を止めて os_log を使う
iOS10以降はログのシステムが変わったので、基本的にはNSLogを使うのではなくos_logというAPIを使います。そうしないと、現状では xcode のあの使いにくいコンソールログでしかログを確認できません。
使い方は簡単。os_log() という関数を呼び出すだけ。ただし、1点気を付けるのは "%s" ではなく %{public}s のように書きます。そうしないと、ログの出力時に
#import <os/log.h> void log(const char* msg) { os_log(OS_LOG_DEFAULT, "%{public}s", msg); }
idevicesyslog を使う
idevicesyslog というコマンドは libimobiledevice というソフトウェアに含まれています。macosのHomeBrewを使ってインストールします。
brew update brew upgrade brew install usbmuxd --HEAD brew install libimobiledevice --HEAD
インストールが終わったら
idevicesyslog
でログが見えます。
ログを成型する
idevicesyslog でログを見るとxcodeで見た時のように無駄に長ったらしいログが出ます。
Oct 18 13:27:21 devicename bundleid[710] <Notice>: hogehoge fugafuga
たぶん、見たいのは「hogehoge fugauga」の分だけ。そこで、sedを使ってログを成型。
idevicesyslog | sed -e 's/^.*<[A-Za-z]*>: //'
これで
hogehoge fugafuga
だけになります。あとは grep なりと組み合わせると、ログが見やすくなります。