Sentry (Raven) error monitoring for Laravel and Lumen with send in background via queues
Sentry (Raven) error monitoring for Laravel and Lumen with send in background via queues. This will add a listener to Laravel's existing log system. It makes use to Laravel's queues to push messages into the background without slowing down the application.
Install the latest version with:
$ composer require twineis/raven-php
For Laravel add the service provider in config/app.php
:
For Laravel 5.6
Twine\Raven\Providers\Laravel56ServiceProvider::class,
For Laravel 4.* and 5.* < 5.6
Twine\Raven\Providers\LaravelServiceProvider::class,
Register the Raven alias:
'Raven' => Twine\Raven\Facades\Raven::class,
For Lumen add the following to bootstrap/app.php
$app->register(Twine\Raven\Providers\LumenServiceProvider::class);
Publish the included configuration file (Laravel only):
$ php artisan vendor:publish
Change the Sentry DSN by using the RAVEN_DSN
env variable or changing the config file:
RAVEN_DSN=your-raven-dsn
This library uses the queue system, make sure your config/queue.php
file is configured correctly. You can also specify the connection and the queue to use in the raven config. The connection and queue must exist in config/queue.php
. These can be set using the RAVEN_QUEUE_CONNECTION
for connection and RAVEN_QUEUE_NAME
for the queue.
RAVEN_QUEUE_CONNECTION=redis
RAVEN_QUEUE_NAME=error
The job data can be quite large, ensure you are using a queue that can support large data sets like redis
or sqs
.
If the job fails to add into the queue, it will be sent directly to sentry, slowing down the request, so its not lost.
To monitor exceptions, simply use the Log
facade or helper:
Log::error($exception);
// or
app('log')->error($exception);
You can change the logs used by changing the log level in the config by modifying the env var.
RAVEN_LEVEL=error
There is a method to get the last event id so it can be used on things like the error page.
Raven::getLastEventId();
You can pass additional information as context like this:
Log::error('Oops, Something went wrong', [
'user' => ['name' => $user->name, 'email' => $user->email]
]);
This package was inspired rcrowe/Raven.