Breadcrumbs in PHP
Breadcrumbs are a trail of events that occurred in your application leading up to the primary error. They can be as simple as generic logging messages, or they can contain rich metadata about the state of your application: network requests, database queries, UI events, navigation changes, or even earlier occurring errors.
Breadcrumbs can be incredibly helpful in reproducing the steps that led to the error you’re debugging. We’ve been dogfooding them here at Sentry for some time, and they add critical context to errors that a stack trace alone can’t provide. Once you use them, you won’t go back.
Start by ensuring you’re running a recent version of our PHP SDK (
sentry/sentry on composer).
From there you can capture breadcrumbs by attaching them to the Sentry instance:
<?php $sentry = new \Raven_Client(...); $sentry->breadcrumbs->record(array( 'data' => array( 'endpoint' => $rpc->endpoint, ), 'category' => 'rpc', ));
You can also use standard log-style annotations:
<?php $sentry->breadcrumbs->record(array( 'message' => 'request to ' . $rpc->endpoint, 'category' => 'rpc', ));
Automated instrumentation in PHP is fairly limited today. We currently support integration with Monolog and the native
error_reporting. The error reporting hook will get installed by default, but if you’re using Monolog you just need to register another handler:
<?php $handler = new \Raven_Breadcrumbs_MonologHandler($sentry); $monolog->pushHandler($handler);
Note: if you’re using multiple logger instances, you’ll need to bind to each one individually.
Breadcrumbs for PHP are still in the early phase, but we think there’s a lot of opportunity to integrate them into your application. Prime targets would be areas where you make RPC or HTTP calls. If you have feedback let us know by opening an issue on our public GitHub repository.