トレースを使用して、プラグインまたはユーザー定義ワークフロー活動 (カスタム コード) のトラブルシューティングを行います。 トレースは、コードエラーの原因の診断に役立つランタイム情報を記録することで開発者を支援します。 トレースでは、同期または非同期の実行がサポートされます。
ITracingServiceという名前のサービスは、Microsoft Dataverseのランタイム トレース情報を記録します。 カスタム コードは、このサービスに情報を提供できます。この情報は、次の 3 つの異なる場所に記録できます。
トレースログ
システムは、トレース ログ レコードを PluginTraceLog テーブルに書き込みます。 トレース ログの有効化に関するページで説明されている トレース 設定は、これらのレコードの書き込みを制御します。
モデル駆動型アプリケーションでこのデータを見つけるには 、[設定] に移動し、[ プラグイン トレース ログ ] タイルを選択します。 タイルは、割り当てられたセキュリティ ロールがトレース ログ テーブル レコードへのアクセスを許可する場合にのみ表示されます。
「 トレースの使用」の例に示すように、ブラウザーで Web API を使用するか、 プラグイン トレース ビューアー コミュニティ ツールを使用すると、このデータを簡単に表示できます。
重要
トレース ログは、特に多くのトレースと例外を生成する場合に、組織のストレージ領域を占有します。 デバッグとトラブルシューティングのためにトレース ログのみを有効にし、完了したら無効にします。
エラー ダイアログ
プラットフォームから例外を返す同期登録済みプラグインまたはカスタム ワークフロー アクティビティは、サインインしているユーザーに表示される Web アプリケーションのエラー ダイアログ ボックスになります。 ユーザーは、ダイアログのログファイルのダウンロードボタンを選択して、例外とトレース出力を含むログを表示できます。
システムジョブ
例外を返す非同期登録済みプラグインまたはカスタム ワークフロー アクティビティの場合、トレース情報は Web アプリケーションの [システム ジョブ] フォームの [詳細] 領域に表示されます。
トレース ログを有効にする
トレース ログを作成するかどうかは、組織 テーブル PluginTraceLogSetting 列の値によって異なります。 プログラムに PluginTraceLogSetting 値を更新させることでトレース ログを有効化できます。
トレース ログを有効にする 2 つ目の方法は、従来の Web アプリケーションを使用することです。 設定>管理>システムの設定の順に移動します。 カスタマイズタブで、プラグイン トレース ログへのログ記録を有効化という名前のドロップダウン メニューを見つけて、使用可能なオプションから 1 つを選択します。 詳細については、「 統合インターフェイス アプリの設定」 および 「レガシ Web クライアント アプリの設定」を参照してください。
3 つ目のオプションは、プラグイン登録ツールにあります。 ツールを組織 (環境) に接続した後、設定>プラグイン トレース ログへのログ記録 の順に選択してから利用可能なオプションを選択します。
| 価値 | オプション | 説明 |
|---|---|---|
| 0 | オフ | トレース ログへの書き込みは無効です。 PluginTraceLog レコードは作成されません。 ただし、ログが書き込まれていない場合でも、ユーザー定義コードはそれでも Trace(String, Object[]) メソッドを呼び出すことができます。 |
| 1 | 例外 | ユーザー定義コードから例外がプラットフォームに渡されると、トレース情報がログに書き込まれます。 |
| 2 | すべて | コードの完了時に、またはユーザー定義コードから例外がプラットフォームに渡されたときに、トレース情報がログに書き込まれます。 |
トレース ログの設定が例外に設定されている場合、ユーザー定義コードが例外をプラットフォームに返したとき、トレース ログのレコードが作成され、トレース情報はもう一つの場所にも書き込まれます。 同期して実行されるユーザー定義コードの場合は、情報はエラー ダイアログ ボックスでユーザーに表示されます。それ以外の、非同期のコードの場合は、情報は関連するシステム ジョブに書き込まれます。
トレース サービスへの書き込み
トレース サービスに書き込む前に、最初に、渡された実行コンテキストからトレース サービス オブジェクトを取得する必要があります。 その後、ユーザー定義コードに、Trace(String, Object[]) 呼び出しを追加するだけで、このメソッドの呼び出しで関連する診断情報が渡されます。
//Extract the tracing service for use in debugging plug-ins.
ITracingService tracingService =
(ITracingService)serviceProvider.GetService(typeof(ITracingService));
// Use the tracing service
tracingService.Trace("Write your message here.");
次に、プラグインまたはユーザー定義ワークフロー活動を作成して展開します。 組織によってサポートされ、有効になっていて、前のセクションで説明したとおりに、Web ダイアログまたはシステム ジョブでユーザーにも利用できるようになっている場合、ユーザー定義コードの実行中に、トレース メソッドを呼び出しで提供された情報は、ITracingService によってトレース ログのエンティティ レコードに書き込まれます。 トレース ログに書き込まれるトレース情報は、トレース設定で構成されます。 詳細については、トレース ログを有効にする を参照してください。
注記
ユーザー定義コードがデータベース トランザクション内で実行され、トランザクションのロールバックを引き起こす例外が発生した場合、コードによるすべてのテーブル データの変更は取り消されます。 ただし、 PluginTraceLog レコードはロールバックが完了した後も残ります。
トレース サービスに関する追加情報
ITracingServiceは、Trace メソッドを介して受信した情報をバッチ処理します。 カスタム コードが正常に実行された後、または例外をスローした後、新しい PluginTraceLog レコードに情報を書き込みます。
各 Trace 呼び出しは、PluginTraceLogMessageBlock 列に新たな行として記録されます。 10 KB のテキストのみを書き込むことができます。 この制限を満たすために、システムは古いトレース行を削除して、最新の行のみが保存されるようにします。
PluginTraceLog レコードには有効期限があります。 一括削除ジョブがバックグラウンドで 1 日に 1 回実行されて、作成から 24 時間経過したレコードを削除します。 データベースの過剰な増加を防ぐために、plugintracelogbase テーブルのサイズが 100 GB を超える場合、Microsoftはプラグイン トレース ログへのログ記録を無効にする可能性があります。
注意
このジョブを無効にしたり、ジョブが発生する頻度を調整したりできますが、元の設定に戻さなかった場合、パフォーマンスの問題が発生する可能性があります。
コミュニティ ツール
プラグイン追跡ビューア
プラグイン トレース ビューアー は、XrmToolBox コミュニティが開発したツールです。 コミュニティで開発されたツールについては、 Dataverse のコミュニティ ツールに関する記事を 参照してください。
注記
Microsoftでは、コミュニティ ツールのサポートは提供されません。 ツールに関する質問がある場合は、発行元にお問い合わせください。 詳細については、XrmToolBox を参照してください。