この記事の目次
Salesforceにおけるデバッグログとは?

Salesforceにおけるデバッグログの概要

サンプルコード
次に、サンプルコードを用いてSalesforceにおけるデバッグログを説明します。CODE_UNIT_STARTEDとCODE_UNIT_FINISHEDの間が、コードの単位の範囲です。作業の単位に他の作業単位の組み込みが可能です。 コードの組み込みには、トリガや承認プロセス、Apexリード変換、Web サービスの呼び出しの他、受信メール処理などが含まれます。 しかし、特定的というわけではなく、ログの行には、どのコードやルールが実行されているのかが示されます。 また、デバッグログにメッセージが書かれている場合もあります。以下、使用したサンプルコードになります。 //ヘッダー部分
APEX_CODE,DEBUG;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;VALIDATION,INFO;VISUALFORCE,INFO;
WORKFLOW,INFO
//コードユニット
EXECUTION_STARTED
CODE_UNIT_STARTED|[EXTERNAL]execute_anonymous_apex
CODE_UNIT_STARTED|[EXTERNAL]MyTrigger on Account trigger event BeforeInsert for [new]|__sfdc_trigger/MyTrigger
CODE_UNIT_FINISHED <-- The trigger ends
CODE_UNIT_FINISHED <-- The executeAnonymous ends
EXECUTION_FINISHED
//デバッグログの例
37.0 APEX_CODE,FINEST;APEX_PROFILING,INFO;CALLOUT,INFO;DB,INFO;SYSTEM,DEBUG;
VALIDATION,INFO;VISUALFORCE,INFO;WORKFLOW,INFO
Execute Anonymous: System.debug('Hello World!');
16:06:58.18 (18043585)|USER_INFO|[EXTERNAL]|005D0000001bYPN|devuser@example.org|
Pacific Standard Time|GMT-08:00
16:06:58.18 (18348659)|EXECUTION_STARTED
16:06:58.18 (18383790)|CODE_UNIT_STARTED|[EXTERNAL]|execute_anonymous_apex
16:06:58.18 (23822880)|HEAP_ALLOCATE|[72]|Bytes:3
16:06:58.18 (24271272)|HEAP_ALLOCATE|[77]|Bytes:152
16:06:58.18 (24691098)|HEAP_ALLOCATE|[342]|Bytes:408
16:06:58.18 (25306695)|HEAP_ALLOCATE|[355]|Bytes:408
16:06:58.18 (25787912)|HEAP_ALLOCATE|[467]|Bytes:48
16:06:58.18 (26415871)|HEAP_ALLOCATE|[139]|Bytes:6
16:06:58.18 (26979574)|HEAP_ALLOCATE|[EXTERNAL]|Bytes:1
16:06:58.18 (27384663)|STATEMENT_EXECUTE|[1]
16:06:58.18 (27414067)|STATEMENT_EXECUTE|[1]
16:06:58.18 (27458836)|HEAP_ALLOCATE|[1]|Bytes:12
16:06:58.18 (27612700)|HEAP_ALLOCATE|[50]|Bytes:5
16:06:58.18 (27768171)|HEAP_ALLOCATE|[56]|Bytes:5
16:06:58.18 (27877126)|HEAP_ALLOCATE|[64]|Bytes:7
16:06:58.18 (49244886)|USER_DEBUG|[1]|DEBUG|Hello World!
16:06:58.49 (49590539)|CUMULATIVE_LIMIT_USAGE
16:06:58.49 (49590539)|LIMIT_USAGE_FOR_NS|(default)|
Number of SOQL queries: 0 out of 100
Number of query rows: 0 out of 50000
Number of SOSL queries: 0 out of 20
Number of DML statements: 0 out of 150
Number of DML rows: 0 out of 10000
Maximum CPU time: 0 out of 10000
Maximum heap size: 0 out of 6000000
Number of callouts: 0 out of 100
Number of Email Invocations: 0 out of 10
Number of future calls: 0 out of 50
Number of queueable jobs added to the queue: 0 out of 50
Number of Mobile Apex push calls: 0 out of 10
16:06:58.49 (49590539)|CUMULATIVE_LIMIT_USAGE_END
16:06:58.18 (52417923)|CODE_UNIT_FINISHED|execute_anonymous_apex
16:06:58.18 (54114689)|EXECUTION_FINISHED
トリガ用のデバッグログ
続いて、トリガ用のデバッグログについて説明します。具体的には、デバッグの検索条件によってトリガやApexクラスのレベルを微調整できます。 たとえば、複雑なプロセスの出力を評価するときは、1つの要求で特定のクラスログの冗長性を上げて、他のクラス、トリガのログをオフにすることも可能です。 クラスやトリガのデバッグログレベルを上書きすると、これらのデバッグレベルはクラス、トリガが呼び出すクラスメソッドと、結果として実行されるトリガにも適用されます。 実行パス内すべてのクラスメソッドとトリガは、これらのデバッグログ設定を上書きする場合以外は、呼び出し側から継承します。 トリガ1がクラス1メソッドとCクラス2の別のメソッドを呼び出し、クラス1がクラス3のメソッドを呼び出し、さらにユーティリティクラスメソッドを呼び出します。 これが、クラス2がトリガ2の実行を起動させる仕組みです。trigger Trigger1 on Account (before insert) {
Class1.someMethod();
Class2.anotherMethod();
}
public class Class1 {
public static void someMethod() {
Class3.thirdMethod();
}
}
public class Class3 {
public static void thirdMethod() {
UtilityClass.doSomething();
}
}
public class Class2 {
public static void anotherMethod() {
// Some code that causes Trigger2 to be fired.
}
}
デバッグログの優先順位
デバッグログの優先順位についても、いくつか説明しましょう。Salesforceのデバッグログは、追跡フラグによって、他のログ記録ロジックもすべて上書きされます。 開発者コンソールの読み込みの際は、追跡フラグを「設定」やTraceFlag、DebugLevel Tooling APIオブジェクトを使って設置しましょう。追跡フラグが使用できないときは、同期、非同期Apexテストがデフォルトのログレベルで実行されます。 デフォルトのログは、DBではINFO、APEX_CODE、SYSTEMではDEBUGです。関連する追跡フラグが無効でテストが実行中ではないならば、APIヘッダーでログレベルが設定されます。 デバッグヘッダーなしで送信されたAPI要求は、別のログルールが有効でないとき、一時的なログ、保存されないログが生成されます。 また、エントリポイントでログレベルが設定されている場合は、ログレベルが使用されます。Salesforceにおけるデバッグログの注意点

Salesforceのデバッグログを活用しよう
