Salesforceにおけるデバッグログとは?設定方法や解析方法、注意点をご紹介
IT・技術関連
更新日:2024.09.05
エンジニア採用
Salesforceにおけるデバッグログとは? Salesforceにおけるデバックログとは、データベースの操作やシステムプロセス、トランザクションの実行や、テスト中に出たエラーを見つけるのに必要な機能です。 例えば、データベースの変更やHTTPのコールアウト、Apexのエラーの詳細、Apexによって使用されるリソースの詳細、ワークフロールール、割り当てルール、承認プロセスなど、自動化されたワークフローの処理などがあります。 自分を含むユーザやクラス、トリガのデバッグログを保持や管理できます。クラス、トリガが実行されたときにログ記録が有効ならば、実行時にログが作られます。 デバッグログには、「設定」から、「クイック検索」に「デバッグログ」と入力し、「デバッグログ」を選択しましょう。 次に、確認したいデバッグログ横の「表示」をクリックし、「ダウンロード」をクリックしてログをXMLファイルとしてダウンロードします。
Salesforceにおけるデバッグログの概要
ここでは、Salesforceにおける具体的なデバッグログを説明しましょう。 一般的に、デバッグログを作った場合、表示される情報の種類や量は、ユーザに設定した検索値によって変わります。しかし、デバッグログの形は変わりません。 Apexデバッグログでは、セッションIDは「SESSION_ID_REMOVED」に置き換えられますが、デバッグログには、ヘッダーのセクションがあります。 トランザクションで使われるAPIのバージョン、ログ生成に使用されるログのカテゴリとレベルがあるということです。 また、実行ユニットはトランザクションと同じで、トランザクション内で発生した全部の情報を含みます。EXECUTION_STARTEDとEXECUTION_FINISHEDの間が実行ユニットの範囲です。ユニットは、トランザクション内の作業単位になります。 たとえば、webserviceメソッド、トリガはコードの単位の1つです。なお、クラスはコードではありません。サンプルコード
次に、サンプルコードを用いて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におけるデバッグログには、いくつか注意点があります。デバッグログには、時間をベースにしたトリガのアクション情報を記すことができません。 また、ApexコードのログレベルがFINESTの場合、Apex変数の割り当て詳細がデバッグログに含まれます。追跡するApexコードで機密データが処理されないかを確認しましょう。 FINESTログレベルを有効化する前に、組織のApexで処理される機密データのレベルを把握してください。 また、コミュニティユーザのセルフ登録など、ユーザパスワードがApex文字列変数に割り当てられる場合、プロセスに特に注意が必要です。 クラスやトリガの追跡フラグを設定しても、ログの生成や保存は行われません。クラス、トリガの追跡フラグにより、ユーザ追跡フラグによって設定されたログレベルが上書きされます。 ログ記録が有効のときのみ、実行時にログが生成されます。Salesforceのデバッグログを活用しよう
今回は、Salesforceにおけるデバックログについて紹介しました。Salesforceのデバッグログは、データベースの操作やシステムプロセス、トランザクションの実行や、テスト中に出たエラーを見つけるための機能です。 自分を含み、ユーザやトリガのデバッグログは保存や管理ができます。特に実行中にエラーが起きた際はデバッグログを確認することがあるので、今後活用できるようにしておきましょう。]]>この記事の監修者・著者
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
- 2024-06-30キャリアインフラエンジニアはやめとけって本当?きつい理由を口コミを交えて解説
ITエンジニアの派遣を利用したい企業様へ
- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。