Back to Blog Home

Breadcrumbs in PHP

David Cramer image

David Cramer -

Breadcrumbs in PHP

Continuing on our JavaScript and Python breadcrumb announcements, we’re happy announce native support in our PHP error tracking SDK.

What are Breadcrumbs?

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.

Getting Started

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

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.

Looking Forward

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.

Share

Share on Twitter
Share on Facebook
Share on HackerNews
Share on LinkedIn

Published

Sentry Sign Up CTA

Code breaks, fix it faster

Sign up for Sentry and monitor your application in minutes.

Try Sentry Free

Topics

Error Monitoring

The best way to debug slow web pages

Listen to the Syntax Podcast

Of course we sponsor a developer podcast. Check it out on your favorite listening platform.

Listen To Syntax
    TwitterGitHubDribbbleLinkedinDiscord
© 2024 • Sentry is a registered Trademark
of Functional Software, Inc.