SalesforceにおけるWebサービスコールアウトのテスト完全ガイド

Salesforceデバッグログの「* Skipped X bytes of detailed log」の仕組み


Salesforceデバッグログの「* Skipped X bytes of detailed log」の仕組み

Salesforceでは、デバッグログのサイズが上限(通常2MB)を超えた場合、ログの一部を省略して「Skipped X bytes of detailed log」と記録します。このメカニズムは、ログサイズを制御しつつ、重要な情報を最大限保持するために設計されています。本記事では、この省略がどのように適用されるかを解説し、対策方法も紹介します。


省略が適用される仕組み

デバッグログが上限を超えた場合、Salesforceは以下の基準に基づいて省略を適用します:

  1. ログの重要度を評価

    • 高度なログイベント(例:エラー、警告)は可能な限り保持されます。
    • 低優先度のイベント(例:詳細なシステム出力や多量のデータ処理結果)は省略されやすくなります。
  2. ログのバイト数のカウント

    • ログはバイト単位で計測され、サイズが上限を超える部分が省略対象となります。
    • トランザクションの途中でも省略が適用される場合があります。
  3. 処理の動的調整

    • ログの詳細度(デバッグレベル)に基づき、記録される情報の量が動的に変化します。

対策方法

以下の方法で省略を回避し、必要な情報を取得できます:

  1. ログレベルを調整する

    • 具体的に必要なカテゴリのログレベルを適切に設定することで、不要な情報を抑えられます。例えば、`Database`カテゴリを`ERROR`に設定して詳細クエリログを抑制します。
  2. トランザクションを分割する

    • 大量のデータを処理する場合、処理を複数のトランザクションに分割することで、ログサイズを分散できます。
  3. ログフィルタを活用する

    • 特定のユーザーやアクションにのみログを記録するようフィルタを設定することで、ログ量を制御します。
  4. ログのエクスポートと解析

    • Salesforce CLIやAPIを利用して、ログを外部システムにエクスポートし、ローカルで詳細解析を行います。

コードサンプル:デバッグログ設定の調整

以下は、デバッグログの設定をプログラムで変更する例です:

// ログレベルを動的に調整するクラス
public class DebugLogAdjuster {
    public static void adjustLogLevels() {
        System.debug(LoggingLevel.ERROR, '重要なログレベルに調整しています...');
        // 必要に応じてコードを追加
    }
}

まとめ

Salesforceのデバッグログの「Skipped X bytes of detailed log」は、ログサイズを管理するための重要なメカニズムです。適切なログレベル設定やトランザクション分割を活用することで、省略を最小限に抑え、必要な情報を効率よく収集できます。

コメント