Skip to content
forked from tylercd100/lern

LERN is a Laravel 5 package that will record exceptions into a database and will notify you via Email, Pushover or Slack.

License

Notifications You must be signed in to change notification settings

palokankare/lern

 
 

Repository files navigation

LERN (Laravel Exception Recorder and Notifier)

GitHub version Software License Build Status Scrutinizer Code Quality Code Coverage Dependency Status Total Downloads

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

Installation

Install via composer - In the terminal:

composer require tylercd100/lern

Now add the following to the providers array in your config/app.php

Tylercd100\LERN\LERNServiceProvider::class

and 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 migrate

Usage

To 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);
}

Recording

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()

Notifications

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.

Custom Monolog Handlers

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);

Changing the text

//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

Roadmap

  • Support more Monolog Handlers
  • Exception report page or command to easily identify your application's issues.
  • Notification rate limiting and/or grouping.

About

LERN is a Laravel 5 package that will record exceptions into a database and will notify you via Email, Pushover or Slack.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%