web-dev-qa-db-ja.com

CoreDataからのデバッグ出力を削減しますか?

CoreDataを使用しているiOS/macOSプロジェクトで作業しています。正常に動作しますが、大量のデバッグ情報をコンソールに出力します。これにより、コンソールが使用できなくなります。これは、私の印刷ステートメントがすべてのCoreData関連のものに埋め込まれているためです。

私はいくつかのデータをフェッチする非常に単純なCoreDataセットアップを持っているので、これらはエラーではなく、一般的なイベントログだけのようです。 CoreDataを使用した他のプロジェクトでも同じ結果が得られます。

このログをコンソールに減らす/削除する方法はありますか?

いくつかのサンプルデータ( ここにすべてのデータ ):

CoreData: warning: CoreData+CloudKit: -[NSCloudKitMirroringDelegate _

performExportWithRequest:]_block_invoke_2(946): Finished export: <PFCloudKitExporter: 0x2838bd840>
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate _finishedRequest:withResult:](2102): Finished request: <NSCloudKitMirroringExportRequest: 0x2823bbb40> DC26CDEE-0AB6-42CD-81E5-996E7E7727F9 with result: <NSCloudKitMirroringResult: 0x282dfcfa0> success: 1 madeChanges: 0 error: (null)
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate _scheduleAutomatedExportWithLabel:activity:completionHandler:]_block_invoke(2170): <NSCloudKitMirroringDelegate: 0x281ae4580> - Finished automatic export - AppActivationExport - with result: <NSCloudKitMirroringResult: 0x282dfcfa0> success: 1 madeChanges: 0 error: (null)
CoreData: warning: CoreData+CloudKit: -[NSCloudKitMirroringDelegate finishedAutomatedRequestWithResult:](2115): Finished request '<NSCloudKitMirroringExportRequest: 0x2823bbb40> DC26CDEE-0AB6-42CD-81E5-996E7E7727F9' with result: <NSCloudKitMirroringResult: 0x282dfcfa0> success: 1 madeChanges: 0 error: (null)
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate checkAndExecuteNextRequest](2073): <NSCloudKitMirroringDelegate: 0x281ae4580>: Checking for pending requests.
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate checkAndExecuteNextRequest]_block_invoke(2088): <NSCloudKitMirroringDelegate: 0x281ae4580>: No more requests to execute.
CoreData: CloudKit: CoreData+CloudKit: -[NSCloudKitMirroringDelegate _scheduleAutomatedImportWithLabel:activity:completionHandler:](2140): <NSCloudKitMirroringDelegate: 0x281ae4580> - Beginning automated import - ImportActivity - in response to activity:
<CKSchedulerActivity: 0x280ec8f00; additionalXPCActivityCriteria={
    Priority = Utility;
}
10
eivindml

これらを起動引数として追加してみて、それが役立つかどうかを確認してください

-com.Apple.CoreData.SQLDebug 0
-com.Apple.CoreData.Logging.stderr 0               
-com.Apple.CoreData.ConcurrencyDebug 0
-com.Apple.CoreData.MigrationDebug 0

EDIT1:これはApple docs:製品>スキーム>スキームの編集を選択します。実行などのアクションを選択し、引数タブを選択します。com.Apple.CoreData.CloudKitDebugユーザーのデフォルトを渡します。アプリケーションへの引数としてデバッグレベル値を使用して設定 Like this

 -com.Apple.CoreData.CloudKitDebug 0

この最後の1つを起動引数として追加すると、希望どおりの結果が得られます。

AppleDocsへのリンク CloudKitを使用した Debug Errors in Core Data というセクションを確認してください

9
AD Progress

私も同じ問題を抱えていました。
これにより、CoreDataデバッグ出力が無効になります。
「起動時に渡される引数」:
-com.Apple.CoreData.Logging.stderr 0
私のために働いた。

10
nouatzi

Xcodeで次の手順に従います。

  1. 製品
  2. スキーム
  3. スキームを編集...
  4. アプリの構築方法の左側を選択しました(おそらくRunと思います)

-com.Apple.CoreData.SQLDebug「起動時に渡される引数」。それが表示されたら、オフにします。表示されない場合は、以下を追加してください。

-com.Apple.CoreData.SQLDebug 1

値と説明:

  1. SQLステートメント、行数、実行時間
  2. バインド値と、管理対象オブジェクトの完全なリストをリストしないNSSQLiteStatementの切り捨てバージョン。
  3. クエリに対して返された管理対象オブジェクトのリスト。これらのオブジェクトはメモリにフォールトされていないため、管理オブジェクトIDのみが出力されます。
  4. SQLite Explainクエリプラン

From http://blog.raymccrae.scot/2017/12/core-data-sqldebug-log-levels.html から

3
J. Doe