Bugsnag notifier for the Laravel PHP framework
The Bugsnag Notifier for Laravel gives you instant notification of errors and exceptions in your Laravel PHP applications. We support Laravel 5, Laravel 4, Laravel 3, and Lumen.
Bugsnag captures errors in real-time from your web, mobile and desktop applications, helping you to understand and resolve them as fast as possible. Create a free account to start capturing errors from your applications.
Check out this excellent Laracasts screencast for a quick overview of how to use Bugsnag with your Laravel apps.
Install the bugsnag/bugsnag-laravel
package
$ composer require bugsnag/bugsnag-laravel:1.*
Update config/app.php
(or app/config/app.php
for Laravel 4) to activate Bugsnag
# Add `BugsnagLaravelServiceProvider` to the `providers` array
'providers' => array(
...
'Bugsnag\BugsnagLaravel\BugsnagLaravelServiceProvider',
)
# Add the `BugsnagFacade` to the `aliases` array
'aliases' => array(
...
'Bugsnag' => 'Bugsnag\BugsnagLaravel\BugsnagFacade',
)
(Laravel 5 only) Use the Bugsnag exception handler from App/Exceptions/Handler.php
.
# DELETE this line
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
# ADD this line instead
use Bugsnag\BugsnagLaravel\BugsnagExceptionHandler as ExceptionHandler;
After this change, your file should look like this:
<?php namespace App\Exceptions;
use Exception;
use Bugsnag\BugsnagLaravel\BugsnagExceptionHandler as ExceptionHandler;
class Handler extends ExceptionHandler {
...
}
Create a file config/bugsnag.php
that contains your API key:
Configure your api_key
:
<?php # config/bugsnag.php
return array(
'api_key' => 'YOUR-API-KEY-HERE'
);
Optionally, you can add the notify_release_stages
key to the same file
above to define which Laravel environments will send Exceptions to Bugsnag.
return array(
'api_key' => 'YOUR-API-KEY-HERE',
'notify_release_stages' => ['production', 'staging']
);
Generate a template Bugsnag config file
$ php artisan config:publish bugsnag/bugsnag-laravel
Update app/config/packages/bugsnag/bugsnag-laravel/config.php
with your
Bugsnag API key:
return array(
'api_key' => 'YOUR-API-KEY-HERE'
);
Optionally, you can add the notify_release_stages
key to the same file
above to define which Laravel environments will send Exceptions to Bugsnag.
return array(
'api_key' => 'YOUR-API-KEY-HERE',
'notify_release_stages' => ['production', 'staging']
);
In bootstrap/app.php
add the line
$app->register('Bugsnag\BugsnagLaravel\BugsnagLaravelServiceProvider');
just before the line
require __DIR__ . '/../app/Http/routes.php';
Change the function report
in app/Exceptions/Handler.php
to look like this:
public function report(Exception $e) {
app('bugsnag')->notifyException($e, []);
return parent::report($e);
}
Create a file config/bugsnag.php
that contains your API key
<?php # config/bugsnag.php
return array(
'api_key' => 'YOUR-API-KEY-HERE'
);
It is often useful to send additional meta-data about your app, such as information about the currently logged in user, along with any error or exceptions, to help debug problems.
To send custom data, you should define a before-notify function, adding an array of "tabs" of custom data to the $metaData parameter. For example:
Bugsnag::setBeforeNotifyFunction("before_bugsnag_notify");
function before_bugsnag_notify($error) {
// Do any custom error handling here
// Also add some meta data to each error
$error->setMetaData(array(
"user" => array(
"name" => "James",
"email" => "james@example.com"
)
));
}
See the setBeforeNotifyFunction
documentation on the bugsnag-php
library for more information.
You can easily tell Bugsnag about non-fatal or caught exceptions by
calling Bugsnag::notifyException
:
Bugsnag::notifyException(new Exception("Something bad happened"));
You can also send custom errors to Bugsnag with Bugsnag::notifyError
:
Bugsnag::notifyError("ErrorType", "Something bad happened here too");
Both of these functions can also be passed an optional $metaData
parameter,
which should take the following format:
$metaData = array(
"user" => array(
"name" => "James",
"email" => "james@example.com"
)
);
By default we'll use the value of error_reporting
from your php.ini
or any value you set at runtime using the error_reporting(...)
function.
If you'd like to send different levels of errors to Bugsnag, you can call
setErrorReportingLevel
, for example:
Bugsnag::setErrorReportingLevel(E_ALL & ~E_NOTICE);
The Bugsnag PHP Client
is available as Bugsnag
, which allows you to set various
configuration options, for example:
Bugsnag::setReleaseStage("production");
See the Bugsnag Notifier for PHP documentation for full configuration details.
Please report any bugs or feature requests on the github issues page for this project here:
https://github.com/bugsnag/bugsnag-laravel/issues
composer install && ./vendor/bin/phpunit
The Bugsnag Laravel notifier is free software released under the MIT License. See LICENSE.txt for details.