この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Newer Version Available

This content describes an older version of this product. View Latest

デバッグログについて

デバッグログには、データベースの操作、システムプロセス、トランザクションの実行時または単体テストの実行中に発生したエラーを記録できます。デバッグログには、次の情報を記載できます。
  • データベースの変更
  • HTTP コールアウト
  • Apex エラー
  • Apex によって使用されるリソース
  • 次のような自動化されたワークフロー処理:
    • ワークフロールール
    • 割り当てルール
    • 承認プロセス
    • 入力規則

特定ユーザのデバッグログを保持および管理できます。

保存されたデバッグログを参照するには、[設定] から [監視] | [デバッグログ] または [ログ] | [デバッグログ] をクリックします。

デバッグログに関する制限は次のとおりです。
  • ユーザを追加すると、そのユーザは最大 20 個のデバッグログを記録できます。ユーザがこの制限値に達すると、そのユーザについてはデバッグログの記録を停止します。[デバッグログの監視] ページで [リセット] をクリックすると、該当するユーザのログ数を 20 にリセットします。既存のログは上書きされません。
  • 各デバッグログは最大 2 MB です。デバックログのサイズが 2 MB を超えると、System.debug ステートメントの始めの方のログの行など、古いログの行が削除されてサイズが縮小されます。ログの行は、デバッグログの最初からだけでなく、どの位置からでも削除できます。
  • 各組織は最大 50 MB のデバッグログを保持できます。組織のデバッグログが 50 MB に達すると、最も古いデバッグログから上書きされます。

デバッグログセクションの調査

デバッグログを生成した後、表示される情報の種類や量は、ユーザに設定した検索値によって異なります。ただし、デバッグログの形式は常に同じです。

デバッグログには、次のセクションがあります。
ヘッダー
ヘッダーには、次の情報が含まれます。
  • トランザクションで使用される API のバージョン。
  • ログの生成に使用されるログのカテゴリとレベル。次に例を示します。
次に、ヘッダーの例を示します。
この例では、API バージョンは 25.0 で、次のデバッグログカテゴリおよびレベルが設定されています。
Apex コード DEBUG
Apex プロファイリング INFO
コールアウト INFO
データベース INFO
システム DEBUG
入力規則 INFO
Visualforce INFO
ワークフロー INFO
実行ユニット
実行ユニットは、トランザクションと同じです。実行ユニットには、トランザクション内で発生したすべての情報が含まれています。実行は、EXECUTION_STARTEDEXECUTION_FINISHED に区切られます。
コードユニット
コードユニットは、トランザクション内の作業単位です。たとえば、webService メソッド、入力規則であるトリガはコードの単位の 1 つです。

クラスはコードの単位ではありません。

メモ

コードの単位は、CODE_UNIT_STARTEDCODE_UNIT_FINISHED で示されます。作業の単位は、作業の他の単位を組み込むことができます。次に例を示します。
コードの単位には、次が含まれますが、これらには限定されません。
  • トリガ
  • ワークフローの呼び出しおよび時間ベースのワークフロー
  • 入力規則
  • 承認プロセス
  • Apex リードの変換
  • @future メソッドの呼び出し
  • Web サービスの呼び出し
  • executeAnonymous コール
  • Apex コントローラの Visualforce プロパティアクセス
  • Apex コントローラの Visualforce アクション
  • execute メソッドの各実行のほか、Apex start メソッドや finish メソッドの一括実行
  • Apex System.Schedule execute メソッドの実行
  • 受信メールの処理
ログの行
ログの行は、コードユニット内に含まれ、実行されたコードやルールを示します。ログの行は、デバッグログ専用に書き込まれたメッセージである場合もあります。次に例を示します。
デバッグログの行の例
ログの行は、一連の項目で構成され、項目はパイプ (|) で区切られます。形式は次のとおりです。
  • タイムスタンプ: イベント発生時の時刻と括弧で囲まれた値で構成されます。時刻はユーザのタイムゾーンで、形式は HH:mm:ss.SSS となります。値は、要求が開始されてからの経過時間をミリ秒単位で表します。経過時間の値は、開発者コンソールで確認したログには含まれません。
  • イベント識別子: SAVEPOINT_RESETVALIDATION_RULE など、書き込まれるデバッグログをトリガした特定のイベント、およびメソッド名またはコードが実行された行番号および文字番号など、そのイベントと共に記録された追加情報で構成されます。
追加ログデータ
さらに、ログには次の情報が含まれます。
  • 累積リソース使用状況は、トリガ、executeAnonymousApex のメッセージの一括処理、@future メソッド、Apex テストメソッド、Apex Web サービスメソッド、Apex リードの取引開始など、多くのコードユニットの終わりに記録されます。
  • 累積プロファイル情報は、トランザクションの終わりに 1 回記録され、最もコストのかかるクエリ (最も多くのリソースを使用)、DML の呼び出しなどの情報が含まれます。
次に、デバッグログの例を示します。

Apex クラスおよびトリガ用デバッグログの検索条件の設定

デバッグログの検索条件により、ログの冗長性をトリガおよびクラスレベルで微調整できます。これは Apex ロジックのデバッグ時に特に便利です。たとえば、複雑なプロセスの出力を評価する場合、1 つの要求内で特定のクラスのログの冗長性を上げ、他のクラスまたはトリガのログをオフにすることができます。

クラスまたはトリガのデバッグログレベルを上書きすると、これらのデバッグレベルは、クラスまたはトリガが呼び出すクラスメソッドと、結果として実行されるトリガにも適用されます。実行パス内のすべてのクラスメソッドとトリガは、これらのデバッグログ設定を上書きする場合を除き、コール元から設定を継承します。

次の図は、クラスおよびトリガレベルで上書きされるデバッグログレベルを示しています。このシナリオでは、Class1 が何らかの問題を起こし、詳しい調査が必要であるとします。このために、Class1 のデバッグログレベルが最も詳細なレベルに引き上げられます。Class3 ではこのログレベルが上書きされないため、Class1 の詳細なログレベルが継承されます。ただし、UtilityClass はすでにテストされ、正しく動作することがわかっているため、ログの検索条件はオフになっています。同様に、Class2 は問題の原因であるコードパスに含まれていないため、ログは最小限に抑えられ、Apex コードカテゴリのエラーのみを記録します。Trigger2 は、Class2 からこれらのログ設定を継承します。

クラスおよびトリガ用デバッグログの微調整 クラスおよびトリガ用デバッグログの検索条件
この図のもとになった擬似コード例を次に示します。
  1. Trigger1Class1 のメソッドと Class2 の別のメソッドをコールします。次に例を示します。
  2. Class1Class3 のメソッドをコールし、このメソッドが次にユーティリティクラスのメソッドをコールします。次に例を示します。
  3. Class2 によってトリガ Trigger2 の実行が起動されます。次に例を示します。
ログの検索条件を設定する手順は、次のとおりです。
  1. クラスまたはトリガの詳細ページから、[ログの検索条件] をクリックします。
  2. [ログの検索条件の上書き] をクリックします。

    ログの検索条件は、デフォルトのログレベルに設定されます。

  3. 各ログカテゴリに適したログレベルを選択します。

デバッグログカテゴリ、デバッグログレベル、およびデバッグログイベントについての詳細は、「デバッグログの検索条件の設定」を参照してください。