トレースおよびログ
トレースを使用して、プラグインまたはユーザー定義ワークフロー活動 (カスタム コード) のトラブルシューティングを行います。 トレースは、コードの失敗の原因を診断する補助として、ランタイム情報を記録することによって、開発者を支援します。 トレースは同期実行または非同期実行に対応しています。
Microsoft Dataverse の実行時のトレース情報の記録は、ITracingService という名前のサービスによって提供されます。 ユーザー定義コードによってこのサービスに提供された情報は、次に示す 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 メソッドを使用して 1 つにまとめます。 ユーザー定義コードの実行が正常に完了した後、または例外がスローされた後、情報は新しい PluginTraceLog レコードに書き込まれます。
各 Trace
呼び出しは、PluginTraceLog MessageBlock 列に新たな行として記録されます。 10kbのテキストしか書きこみができません。 この制限を満たすために古いトレース行は削除され、最新の行のみが保存されます。
PluginTraceLog レコードには有効期限があります。 一括削除ジョブがバックグラウンドで 1 日に 1 回実行されて、作成から 24 時間経過したレコードを削除します。
注意事項
このジョブを無効にしたり、発生頻度を調整できますが、あとで元の設定に戻すことができないとパフォーマンスの問題の原因となることがよくあります。
コミュニティ ツール
プラグイン追跡ビューア
プラグイン トレース ビューア は、XrmToolbox コミュニティが開発したツールです。 コミュニティ開発ツールの詳細については、Dataverse のコミュニティ ツールのトピックを参照してください。
注意
コミュニティ ツールは Microsoft の製品ではなく、コミュニティ ツールに対するサポートは提供されません。 このツールに関するご質問は、その発行元にお問い合わせください。 詳細: XrmToolBox。
参照
プラグイン
プラグインのデバッグ
トレース ログの表示
サービスのトレース
PluginTraceLog テーブル
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。