Package Data | |
---|---|
Maintainer Username: | jenssegers |
Package Create Date: | 2014-05-01 |
Package Last Update: | 2017-06-05 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-11-14 15:11:35 |
Package Statistics | |
---|---|
Total Downloads: | 196,674 |
Monthly Downloads: | 47 |
Daily Downloads: | 0 |
Total Stars: | 90 |
Total Watchers: | 3 |
Total Forks: | 11 |
Total Open Issues: | 6 |
Sentry (Raven) error monitoring integration for Laravel projects. This library adds a listener to Laravel's logging component. Laravel's auth and session information will be sent in to Sentry's user context, as well as some other helpful tags such as 'environment', 'server', 'php_version' and 'ip'.
Install using composer:
composer require jenssegers/raven
Add the service provider in app/config/app.php
:
Jenssegers\Raven\RavenServiceProvider::class,
If you only want to enable Sentry reporting for certain environments you can conditionally load the service provider in your AppServiceProvider
:
if ($this->app->environment('production')) {
$this->app->register(Jenssegers\Raven\RavenServiceProvider::class);
}
Optional: register the Raven alias:
'Raven' => Jenssegers\Raven\Facades\Raven::class,
This package supports configuration through environment variables and/or the services configuration file located in app/config/services.php
:
'raven' => [
'dsn' => env('RAVEN_DSN'),
'level' => env('LOG_LEVEL'),
],
The level variable defines the minimum log level at which log messages are sent to Sentry. For development you could set this either to debug
to send all log messages, or to none
to sent no messages at all. For production you could set this to error
so that all info and debug messages are ignored.
For more information about the possible configuration variables, check https://github.com/getsentry/raven-php
In Laravel, the service provider will automatically hook into Laravel's logger and send all messages matching the log level to Sentry.
If you want to send exceptions to Sentry, simply use the Log
facade:
try {
something();
} catch (\Exception $e) {
Log::error($e);
}
For logging messages or exceptions, you can any of these methods: debug
, notice
, warning
, error
, critical
, alert
or emergency
.
Log::debug('Here is some debug information');
If you prefer dependency injection rather than calling the Log
facade, you can typehint the Jenssegers\Raven\RavenHandler
class in your controller methods:
use Jenssegers\Raven\RavenHandler as Raven;
...
public function index(Request $request, Raven $raven)
{
Raven::info('Request received!');
}
The included context builder will automatically collect information about the current logged in user and the session information. If can pass additional user context information like this:
Log::error('Something went wrong', [
'user' => ['name' => 'John Doe', 'email' => 'john@doe.com']
]);
Or pass additional tags:
Log::info('Task completed', [
'tags' => ['state' => 1234]
]);
Or pass some extra information:
Log::warning('Something went wrong', [
'download_size' => 3432425235
]);
Because Lumen uses a different way of handling logging, the service provider is unable to intercept actual exceptions. Instead you can use the included Raven
facade. First add the following to your bootstrap/app.php
:
$app->register(Jenssegers\Raven\RavenServiceProvider::class);
Then add this to your exception handler in app/Exceptions/Handler.php
:
use Jenssegers\Raven\Facades\Raven;
And:
public function report(Exception $e)
{
if ($this->shouldReport($e)) {
Raven::error($e);
}
parent::report($e);
}