LERN from your mistakes
LERN is a Laravel 5 package that will record exceptions into a database and will send you a notification.
Currently supported notification channels via Monolog
Install via composer - In the terminal:
composer require tylercd100/lernNow add the following to the providers array in your config/app.php
Tylercd100\LERN\LERNServiceProvider::classand this to the aliases array in config/app.php
"LERN" => "Tylercd100\LERN\Facades\LERN",Then you will need to run these commands in the terminal in order to copy the config and migration files
php artisan vendor:publish --provider="Tylercd100\LERN\LERNServiceProvider"Before you run the migration you may want to take a look at config/lern.php and change the table property to a table name that you would like to use. After that run the migration
php artisan migrateTo use LERN modify the report method in the app/Exceptions/Handler.php file
public function report(Exception $e)
{
if ($this->shouldReport($e)) {
LERN::handle($e); //Record and Notify the Exception
/*
OR...
LERN::record($e); //Record the Exception to the database
LERN::notify($e); //Notify the Exception
*/
}
return parent::report($e);
}You can call LERN::record($exception); to record an Exception to the database.
To query any Exception that has been recorded you can use ExceptionModel which is an Eloquent Model
use Tylercd100\LERN\Model\ExceptionModel;
$mostRecentException = ExceptionModel::orderBy('created_at','DESC')->first()LERN uses the Monolog library to send notifications. If you need more than the supported notification channels, then you can add your own custom Monolog handlers. To start using any of the supported handlers just edit the provided config file config/lern.php.
To use a custom Monolog Handler call the pushHandler method
use Monolog\Handler\HipChatHandler;
$handler = new HipChatHandler($token,$room);
LERN::pushHandler($handler);
LERN::notify($exception);//Change the subject
LERN::setSubject("An Exception was thrown!");
//Change the message body
LERN::setMessage(function($exception){
$msg = "";
//Get the route
$url = Request::url();
$method = Request::method();
if($url) {
$msg.="URL: {$method}@{$url}".PHP_EOL;
}
//Get the User
$user = Auth::user();
if($user) {
$msg.="User: #{$user->id} {$user->first_name} {$user->last_name}".PHP_EOL;
}
//Exception
$msg.=get_class($exception).":{$exception->getFile()}:{$exception->getLine()} {$exception->getMessage()}".PHP_EOL;
//Input
$input = Input::all();
if(!empty($input)){
$msg.="Data: ".json_encode($input).PHP_EOL;
}
//Trace
$msg.=PHP_EOL."Trace: {$exception->getTraceAsString()}";
return $msg;
});
LERN::notify($e); //Notify the Exception- Support more Monolog Handlers
- Exception report page or command to easily identify your application's issues.
- Notification rate limiting and/or grouping.

