It is a Monolog handler for Sentry PHP SDK v2, v3 and v4 with breadcrumbs support.
- Send each log record to a Sentry server
- Send log records as breadcrumbs when they are handled in batch; the main reported log record is the one with the highest log level
- Send log along with exception when one is set in the main log record context
- Customize data sent to Sentry to fit your needs
- Compatible with Monolog 1, 2 and 3
The suggested installation method is via composer:
# For Sentry PHP SDK v3/v4
composer require bgalati/monolog-sentry-handler
# For Sentry PHP SDK v2
composer require bgalati/monolog-sentry-handler:^1.2
<?php
use BGalati\MonologSentryHandler\SentryHandler;
use Sentry\State\Hub;
$sentryHandler = new SentryHandler(Hub::getCurrent());
/** @var $logger Monolog\Logger */
$logger->pushHandler($sentryHandler);
// Add records to the log
$logger->debug('Foo');
$logger->error('Bar');
Check out the handler constructor to know how to control the minimum logging level and bubbling.
Note
- It is a good idea to combine this handler with a
FingersCrossedHandler
and aBufferHandler
to leverage Sentry breadcrumbs. It gives maximum context for each Sentry event.Look at the symfony guide for a complete example with Monolog and symfony
- Symfony guide: it gives a way to integrate this handler to your app
- Working example with Symfony
- Extension points: Customize data sent to Sentry and more
At the moment the official SDK proposes two Monolog handlers:
Sentry\Monolog\Handler
: each logs becomes a Sentry event- Depending on the setup it can create a lot of noise.
Sentry\Monolog\BreadcrumbHandler
: each logs is added as a breadcrumb in the current event- It cannot be used only with Monolog: it requires default integrations to work correctly.
Both of them don't send event immediately. Thus, sending Sentry events happens; either when PHP process terminates or when the flush is done explicitly.
This lib proposes a Handler that is different:
- It flushes Sentry events on each call: looks like a standard for Monolog handlers
- It adds log records as breadcrumbs when it is used with a buffering handler like
FingersCrossedHandler
As per this comment, Monolog project does not accept new handler with 3rd party dependencies.
For new handlers with third-party dependencies IMO the right way is to publish as a third-party package, with requires on monolog and on whichever dependency is needed. It lets Composer resolve everything which makes more sense really.
Fork me.
Install dependencies with make vendor
.
Run tests with make tests
.
See CHANGELOG.md.