Beyond the basic enable/disable, the stack trace capture engine has several tuning knobs. This article covers them in detail so you can balance diagnostic value, storage cost and privacy concerns.
Available Settings
- Max frames: Cap the depth of captured traces. Defaults to 50.
- Include arguments: See dedicated article.
- Include locals: Capture local variables at each frame (expensive, valuable).
- Skip vendor frames: Hide frames inside
vendor/(Composer libraries) — keeps traces focused on your code. - Skip framework frames: Hide framework internals — even narrower focus.
- Redaction patterns: Regex list applied to argument names.
- Sample rate: Capture full traces on X% of errors; rest get minimal.
Recommended Combinations
- Dev: 100 frames, arguments + locals on, no skipping. Maximum detail.
- Staging: 75 frames, arguments on, locals off, skip vendor frames.
- Production (low traffic): 50 frames, arguments off, skip vendor + framework.
- Production (high traffic): 30 frames, arguments off, sampled at 5%, skip vendor + framework.
Why Skip Frames
A typical request goes through 20+ framework frames before reaching your code. Capturing those doesn't help debug your code — your bug is almost always in your code. Skipping them halves the trace size and makes the useful part stand out.
Worked Examples
- Performance investigation: Locals on temporarily to see what data the slow function was processing.
- Privacy-strict environment: Arguments off, plus aggressive redaction regex covering several custom field names.
- Storage budget: 30 frames + sample rate 10% keeps the error-log table from growing too fast.
- Library bug suspected: Skip vendor frames temporarily turned off so the library's internal call chain is visible.