統合ログ(os_log)を使用してアプリからいくつかのログを取得しようとしています
ログの初期化は次のとおりです。
var osLog : OSLog = OSLog(subsystem: "com.test.testapp", category: "native-tester")
そして、ここに私がそれを使用する方法があります:
os_log("iOS App initialized successfully!", log: osLog, type:.info)
アプリを正常にデバッグすると、ログはコンソール出力に正しく表示されますが、デバイスコンソール([デバイスとシミュレータ]ウィンドウに表示)を見ると、まったく表示されません。
この記事 は、次を使用してデバッグログを有効にするようにシステムを構成する必要があることを示しています
Sudo log config --mode "level:debug" --subsystem com.test.testapp
しかし、それは違いを生むようには見えませんでした。 iPadではなく、ログを表示するようにMacを構成しているからだと思います。
デバイスコンソールでos_logからiPad/iPhoneログを表示するにはどうすればよいですか?
[デバイスとシミュレータ]ウィンドウには、クラッシュレポートのみが表示されます。 log --stream
コマンドを介してコンソールアプリまたはターミナルを使用して、ライブログ出力を表示します。
Xcodeから実行しているとき、またはデバイスから直接実行しているときに、コンソールアプリでデバイスのライブログメッセージを表示するには:
.debug
レベルのメッセージも使用している場合は、必ずデバッグメッセージを含めるも選択してください。 (これらの項目を選択しないと、コンソールには.default
、.fault
、および.error
レベルのメッセージのみが表示されます。)それでもメッセージが表示されない場合は、このターミナルコマンドを入力して、アプリのログレベルを設定してみてください。
Sudo log config --subsystem com.test.testapp --mode level:debug
これにより、サブシステム "com.test.testapp"の.debug
レベルのロギング(.info
および.default
メッセージを含む)が有効になります。
デフォルトのメモリのみではなくメッセージを永続化する場合は、次のように、3つのレベルの永続化を同時にオンにします。
Sudo log config --subsystem com.test.testapp --mode level:debug,persist:debug
ただし、ログ設定に関係なく、クラッシュレポートのみが[デバイスとシミュレータ]ウィンドウに表示されます。
別の落とし穴:スキームでOS_ACTIVITY_MODE
をdisable
に設定した場合、コンソールにアプリのログは表示されません。
その引数を削除するか、チェックを外す必要があります。
ログタイプ.debugおよび.infoは、デフォルトではメモリのみ(ディスクには保存されない)であるため、デバイスコンソールには表示されません。
詳細情報: https://developer.Apple.com/documentation/os/logging?language=objc
こちらもかなり素敵なWWDCです。 https://developer.Apple.com/videos/play/wwdc2016/721/