rcrowe / raven
Raven client for Sentry that supports background processing through multiple providers.
Installs: 66 958
Dependents: 0
Suggesters: 0
Security: 0
Stars: 34
Watchers: 6
Forks: 13
Open Issues: 9
Requires
- guzzlehttp/guzzle: ~4.1.0
- raven/raven: ~0.9.0
Requires (Dev)
- laravel/framework: ~4.2.0
- mockery/mockery: ~0.9.0
- phpunit/phpunit: ~4.1.0
- satooshi/php-coveralls: ~0.6
- squizlabs/php_codesniffer: ~1.5.0
This package is auto-updated.
Last update: 2024-10-29 03:58:41 UTC
README
Raven is a client for recording and transmitting messages to Sentry.
Its special sauce is that it can transmit those messages to Sentry in the background. No more slow down while a HTTP request is made!
Raven offers flexibility in how those messages are captured, processed & sent. But also offers quick seemless intergration into a range of frameworks, such as:
Installation
Add rcrowe\raven
as a requirement to composer.json:
{ "require": { "rcrowe/raven": "~0.2.0" } }
Update your packages with composer update
or install with composer install
.
Then follow the instructions for your provider (if you are using one).
Usage
This library exposes the same API for recording your messages as the official raven-php client. It should just be a case of
replacing Raven_Client
with rcrowe\Raven\Client
. For usage of recording messages checkout out raven-php.
To record a message and transmit it to Sentry straight away (the default):
$raven = new \rcrowe\Raven\Client(##DSN##); $raven->captureMessage('FooBar');
Handlers
Handlers are responsible for taking a new captured message and putting into a background queue. If no handler is registered with the raven client the message is transmitted straight away.
A handler can be added to the client as follows:
$raven = new \rcrowe\Raven\Client(##DSN##); $raven->setHandler( new \rcrowe\Raven\Handler\Sync );
Sync Handler
(Default) Like raven-php new messages are transmitted straight away.
Laravel Handler
If using within a Laravel project, makes use of the illuminate\queue
API. For improved Laravel intergration checkout the Laravel provider below.
$raven = new \rcrowe\Raven\Client(##DSN##); $raven->setHandler( new \rcrowe\Raven\Handler\Laravel( null, App::make('queue') ); );
Transports
Transports are responsible for sending the message to the Sentry API. Transports are always the first parameter passed into a handler. If no transport is provided it will default to HTTP.
$raven->setHandler( new \rcrowe\Raven\Handler\Sync( new \rcrowe\Raven\Transport\Dummy ) );
Dummy
Dummy transport does absolutely nothing. Nothing is transmitted to the API. You may not want to transmit any messages when working in a dev environment.
HTTP
(Default) Transmit the message over HTTP. To do this we make use of the great HTTP client Guzzle.
$raven->setHandler( new \rcrowe\Raven\Handler\Sync( new \rcrowe\Raven\Transport\Guzzle ) );
As this is the default transport mechanism there is no need to pass it into the handler. The above call is the same as:
$raven->addHandler( new \rcrowe\Raven\Handler\Sync );
Providers
Providers offer painless integration to other libraries / frameworks.
Laravel
Installation
Add the service provider to app/config/app.php
:
'rcrowe\Raven\Provider\Laravel\RavenServiceProvider',
Optionally register the facade to your aliases:
'Sentry' => 'rcrowe\Raven\Provider\Laravel\Facade\Raven',
Configuration
Raven needs to know your client DSN. First publish the Raven config file with the following command:
php artisan config:publish rcrowe/raven
Then edit app/config/packages/rcrowe/raven/config.php
You can also set your Raven DSN from app/config/services.php
:
'raven' => [ 'dsn' => '...' ],
Note: Raven makes use of the Laravel queue, so make sure your app/config/queue.php
is set correctly.
Usage
Now where ever you want to record a message just use the normal Log facade.
try { throw new Exception('This is an example'); } catch (Exception $ex) { Log::error($ex); }
To capture and send all messages you can add the following:
App::error(function(Exception $exception, $code) { Log::error($exception); });
Note: Be aware that Laravel does this out of the box in app/start/global.php
Using the alias you can set / remove the user information for all messages:
Sentry::setUser([ 'id' => 1, 'name' => 'Rob Crowe', ]); Sentry::removeUser();
Note: Check out the config file for more!