redfunction/laravel-error-reporting is a Laravel package for laravel error reporting.
It currently has 2 GitHub stars and 1.118 downloads on Packagist (latest version 0.1.13-beta).
Install it with composer require redfunction/laravel-error-reporting.
Discover more Laravel packages by redfunction
or browse all Laravel packages to compare alternatives.
Last updated
composer require redfunction/laravel-error-reporting
{
"require": {
"redfunction/laravel-error-reporting" : "*"
}
}
composer update
[email protected]
ERROR_REPORTING_EMAIL_FROM_NAME="Example name"
ERROR_REPORTING_EMAIL_RECIPIENTS="[email protected] [email protected]"
ERROR_REPORTING_EMAIL_SUBJECT="Test %APP_ENVIRONMENT%"
ERROR_REPORTING_LOG_STACK_TRACE=true
ERROR_REPORTING_JSON_RESPONSE_LONG_MESSAGE=true
<?php
return array(
'doNotReportClasses' => [
Illuminate\Auth\Access\AuthorizationException::class,
Illuminate\Foundation\Testing\HttpException::class,
Illuminate\Database\Eloquent\ModelNotFoundException::class,
Illuminate\Validation\ValidationException::class
],
'doNotReportIpv4Addresses' => [
'127.0.0.1',
'192.168.0.0/24'
],
'emailFrom' => env("ERROR_REPORTING_EMAIL_FROM"),
'emailFromName' => env("ERROR_REPORTING_EMAIL_FROM_NAME"),
'emailRecipients' => preg_split("/\\s+/", env("ERROR_REPORTING_EMAIL_RECIPIENTS", "")),
'emailSubject' => env("ERROR_REPORTING_EMAIL_SUBJECT"),
'emailTemplate' => '',
'customExceptionRender' => null,
'logStackTrace' => env("ERROR_REPORTING_LOG_STACK_TRACE", false),
'jsonResponseLongMessage' => env("ERROR_REPORTING_JSON_RESPONSE_LONG_MESSAGE", false),
'encryptionAlgorithm' => 'md5',
'encryptionFields' => [
'HTTP_AUTHORIZATION',
[
'regexPattern' => 'PASSWORD$',
'useUpperCase'
]
]
);
If you do not want report excpetion class, then you can add class to array doNotReport. If you want use custom template, then you have to put emailTemplate value.
You can choice
You have to add code.
$app->singleton(
Illuminate\Contracts\Debug\ExceptionHandler::class,
RedFunction\ErrorReporting\ExceptionReportHandler::class
);
You have to add \RedFunction\ErrorReporting\Providers\ExceptionReportProvider::class to providers.
'providers' => [
...
\RedFunction\ErrorReporting\Providers\ExceptionReportProvider::class,
...
]
You have to add implements of class \ErrorReporting\Interfaces\IReportException.
Report can call methods (getLogMessage, getLogType, getRedirectPage)
<?php
/**
* Class ExceptionUsingReport
*
*/
class ExceptionUsingReport extends Exception implements RedFunction\ErrorReporting\Interfaces\IReportException
{
/**
* @return string
*/
public function getLogMessage()
{
return "Error 500: reason...";
}
/**
* 1 - INFO
* 2 - WARNING
* 3 - NOTICE
* 4 - ERROR
* @return integer
*/
public function getLogType()
{
return 4;
}
/**
* @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse|null
*/
public function getRedirectPage()
{
return null;
}
}
You have to add trait \ErrorReporting\Exceptions\Traits\DoNotReportToEmail
<?php
/**
* Class ExceptionNotUsingReport
*
*/
class ExceptionNotUsingReport extends Exception implements RedFunction\ErrorReporting\Interfaces\IReportException
{
use RedFunction\ErrorReporting\Traits\DoNotReportToEmail;
/**
* @return string
*/
public function getLogMessage()
{
return "Error 500: reason...";
}
/**
* 1 - INFO
* 2 - WARNING
* 3 - NOTICE
* 4 - ERROR
* @return integer
*/
public function getLogType()
{
return 4;
}
/**
* @return \Illuminate\Routing\Redirector|\Illuminate\Http\RedirectResponse|null
*/
public function getRedirectPage()
{
return null;
}
}
Example code.
'customExceptionRender' => [
'className' => RedFunction\ErrorReporting\Examples\CustomExceptionRender::class,
'usingException' => [
RedFunction\ErrorReporting\Examples\ExceptionNotUsingReport::class
]
]
<?php
namespace RedFunction\ErrorReporting\Examples;
use Exception;
use Illuminate\Http\Response;
use RedFunction\ErrorReporting\AbstractCustomExceptionRender;
/**
* Class CustomExceptionRender
*
*/
class CustomExceptionRender extends AbstractCustomExceptionRender
{
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param Exception $e
*
* @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
*/
public function render($request, $e)
{
//TODO: You can add something, what you want.
if ($e instanceof Exception) {
$this->log(self::LOG_NOTICE, $e->getMessage());
return new Response($e->getMessage(), $e->getCode());
}
return null;
}
/**
* AbstractCustomExceptionRender constructor.
*/
public function __construct()
{
}
}