web-dev-qa-db-ja.com

デバイスコンソールでos_logメッセージを表示する

統合ログ(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ログを表示するにはどうすればよいですか?

15
Nitay

[デバイスとシミュレータ]ウィンドウには、クラッシュレポートのみが表示されます。 log --streamコマンドを介してコンソールアプリまたはターミナルを使用して、ライブログ出力を表示します。

Xcodeから実行しているとき、またはデバイスから直接実行しているときに、コンソールアプリでデバイスのライブログメッセージを表示するには:

  • Console.appを開きます。
  • 左側のパネルの[デバイス]でデバイスの名前をクリックします。
  • メニューからActionを選択し、次にInclude Info Messagesを選択します。 .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

ただし、ログ設定に関係なく、クラッシュレポートのみが[デバイスとシミュレータ]ウィンドウに表示されます。

22
leanne

別の落とし穴:スキームでOS_ACTIVITY_MODEdisableに設定した場合、コンソールにアプリのログは表示されません。

その引数を削除するか、チェックを外す必要があります。

8
samwize

ログタイプ.debugおよび.infoは、デフォルトではメモリのみ(ディスクには保存されない)であるため、デバイスコンソールには表示されません。

詳細情報: https://developer.Apple.com/documentation/os/logging?language=objc

こちらもかなり素敵なWWDCです。 https://developer.Apple.com/videos/play/wwdc2016/721/

6
Tomasz Czyżak