Apex Debug Log Analyzer
Upload or paste a Salesforce Apex debug log to instantly visualize governor limit consumption, execution timeline, SOQL queries, DML operations, and a full method-level call tree — all processed in your browser with no data sent to our servers.
- ✓ Governor limits with severity indicators
- ✓ Interactive flame graph timeline
- ✓ Method-level call tree
- ✓ SOQL & DML breakdown
- ✓ Direct org connection via OAuth
- ✓ 100% client-side — no data leaves your browser
Apex Debug Log Analyzer
Upload a log file, paste log text, or connect your Salesforce org to fetch logs directly.
Frequently Asked Questions
How do I enable Apex debug logs in Salesforce?
Go to Setup → Debug Logs. Click New to add a debug log for your user. Set log levels — use APEX_CODE: FINEST and APEX_PROFILING: INFO for full visibility into method calls and governor limits. Run your code, then open the log from the Debug Logs list and upload it here.
What are Salesforce Apex governor limits?
Salesforce enforces per-transaction limits to ensure fair use on the multi-tenant platform. Key limits include: SOQL queries (100), SOQL rows returned (50,000), DML statements (150), DML rows (10,000), CPU time (10,000 ms), and heap size (6 MB). Exceeding any limit throws a System.LimitException that rolls back the entire transaction. This tool highlights limits approaching 70% (warning) and 90% (critical) so you can act before hitting the ceiling.
How do I identify SOQL queries inside loops?
Open the Call Tree tab after uploading your log. SOQL nodes appear inline under the method that issued them. If you see the same SOQL query repeated as a child of a loop-method multiple times, that's a SOQL-in-loop pattern. The SOQL tab also lets you sort by row count to find the costliest queries quickly.
What log level should I use for performance profiling?
For performance analysis, set APEX_CODE: FINE or FINEST to capture METHOD_ENTRY/METHOD_EXIT events — these populate the Call Tree. Set APEX_PROFILING: INFO to capture governor limit snapshots. Avoid VISUALFORCE: FINEST or SYSTEM: FINEST unless needed; they add significant noise and can push the log toward the 20 MB truncation limit.
How do I read the execution call tree?
The Call Tree tab shows the complete execution hierarchy. Violet nodes are top-level code units (triggers, batch execute, future methods). Gray monospace nodes are individual method and constructor calls. Blue SOQL badges and orange DML badges appear inline under the method that issued them. Click any node to collapse or expand its children. Use Collapse all to get a high-level overview, then drill into the slowest branches.
How do I interpret CPU time in a debug log?
CPU time measures processing time on Salesforce servers, excluding time waiting for database operations. The limit is 10,000 ms per transaction. High CPU time usually indicates tight loops, recursive processing, or complex in-memory operations. Use the Timeline tab to identify the longest-running code units, and the Call Tree to drill down to the specific method consuming the most time.
Why is my Apex log truncated?
Salesforce caps debug logs at 20 MB. When your transaction generates more log data, the file is cut off and the analyzer shows a truncation warning. To capture the full log: reduce log verbosity (switch APEX_CODE from FINEST to DEBUG), remove unnecessary log levels like SYSTEM and VISUALFORCE, or split your test into smaller operations.
Is my log data sent to your server?
No. When you upload or paste a log, it is parsed entirely in your browser — no data leaves your machine. Only when you connect a Salesforce org via OAuth do we proxy API requests through our server (to handle CORS), but the log body is fetched client-side and parsed locally.
What Salesforce API version does this tool support?
The parser supports debug logs from any Salesforce API version — the log format has been stable since API v30. When fetching logs directly from a connected org, we use the Salesforce Tooling API at version 62.0. The API version shown at the top of your log (e.g. 66.0 APEX_CODE,FINEST) is just metadata; the parser handles all versions.
Related Salesforce Developer Resources
-
Apex Trigger Best Practices for Scalable Salesforce Code
Bulkification patterns, trigger frameworks, and avoiding the governor limits your log analyzer flags.
-
How to Stay Under Asynchronous Apex Limits
Understand the separate governor limits for batch, future, and queueable Apex contexts.
-
Dynamic SOQL in Loops: Security Review Impact
Detect and fix the SOQL-in-loop pattern that shows up as repeated SOQL nodes in the call tree.
-
Fix Salesforce Trigger Recursion and Stack Depth Errors
Diagnose deep call trees and recursive patterns that push CPU time toward the 10,000 ms limit.
-
Apex Best Practices — Salesforce Developer Interview Guide
Governor limits, bulkification, and query optimization explained for interviews and production code.