This package sends you email and slack notification whenever 500 internal server errors happens in your application. This package only works for laravel 8, 9 and 10 This package works for both API and view based laravel project
- Last route the user visited
- If they are authenticated or not
- User ID (If user is authenticated)
- User email (If user is authenticated)
- User error description message (After form is submitted, for a non view based App)
- File Error (The actual file the error was associated with)
- Line Number (The line number the error happened)
- Trace error (The list of files associated with the error; before and after form is submitted)
composer require jgodstime/laravel-error-notifier
In your /app/Exceptions/Handler.php file, in the register method, add \ErrorNotifier\Notify\Helper::getError($e);
this must be inside reportable callback
public function register()
{
$this->reportable(function (Throwable $e) {
\ErrorNotifier\Notify\Helper::getError($e);
});
}
By default this package sends notification immediately the error occured i.e without waiting for users description of the error, you can disable this by adding NOTIFIER_INSTANT=false
in your .env file
By default, Laravel displays the 500 error page in your /views/errors/500.blade.php file when a 500 error occurs in your application
This package places the 500.blade.php file in the /views/errors/ folder after you publish the vendor file
If you already have a 500.blade.php file in your /views/errors folder and you want to use this package; you should remove or move it to another folder.
php artisan vendor:publish --provider="ErrorNotifier\Notify\ErrorNotifierServiceProvider"
Now the vendor files are published in their respective paths
To setup your email driver, you can use mailtrap for test purpose.
MAIL_DRIVER=smtp
MAIL_HOST=sandbox.smtp.mailtrap.io
MAIL_PORT=587
MAIL_USERNAME=528a733...
MAIL_PASSWORD=73c29...
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"
To disable notification to email, set
NOTIFIER_EMAIL=
in your .env file
To setup your slack webhook url
LOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/T....
To test this, simply add $array['key1'] = 'john'; $data = $array['key2'];
in one of your routes, then hit the route In your browser.
Route::get('/convert/file', function(){
$array['key1'] = 'john';
$data = $array['key2'];
});
Notice that we are trying to access an array with key2 that doesn’t exist, this will throw an error and the package will send the error as notification to your email as well as the trace.
Also, you must turn APP_DEBUG=false
and LOG_LEVEL=debug
in your .env file
You should see this
If you don’t have NOTIFIER_INSTANT=false
in your .env file, the package sends instant notification to the setup email and slack channel
Also, after user submits the form, the package sends another notification with user error description message.
You can modify the style for the page to suit your taste,
Note: Be careful not to change the form route and hidden inputs.
A notification email is sent to the email specified in the laravel environment variable (MAIL_FROM_ADDRESS
) in your .env file
You can change this by adding NOTIFIER_EMAIL="[email protected]"
in your .env file.
You can send notification to multiple recipients by adding multiple emails as a string in comma separated format without space
NOTIFIER_EMAIL="[email protected],[email protected]"
You can change the page user is taken to after submitting the form, by default it goes to the home page (/)
NOTIFIER_REDIRECT_URL='/thank-you'
Why not star the github repo? I'd love the attention! Why not share the link for this repository on Twitter, LinkedIn or HackerNews? Spread the word!
Don't forget to follow me on twitter!
Thanks! Godstime John.