diff --git a/src/app/Exceptions/CustomExceptionHandler.php b/src/app/Exceptions/CustomExceptionHandler.php new file mode 100644 index 0000000..8e5b6a7 --- /dev/null +++ b/src/app/Exceptions/CustomExceptionHandler.php @@ -0,0 +1,64 @@ +getExceptionLevel($exception); + $this->logException(__METHOD__, $exception, $level); + } + + /** + * Render an exception into an HTTP response. + * + * @param Request $request + * @param Exception $exception + * @return Response + */ + public function render($request, Exception $exception): Response + { + return parent::render($request, $exception); + } + + /** + * @param Exception $exception + * @return string + */ + protected function getExceptionLevel(Exception $exception): string + { + if (method_exists($exception, 'getLevel')) { + return mb_strtolower($exception->getLevel()); + } + + return LogsLevelsEnum::ERROR; + } + +} \ No newline at end of file diff --git a/src/app/Providers/LogsLayerServiceProvider.php b/src/app/Providers/LogsLayerServiceProvider.php index 21d9499..14bb0ed 100644 --- a/src/app/Providers/LogsLayerServiceProvider.php +++ b/src/app/Providers/LogsLayerServiceProvider.php @@ -3,8 +3,10 @@ namespace Ae3\LaravelLogsLayer\app\Providers; use Ae3\LaravelLogsLayer\app\Containers\LogDataContainer; +use Ae3\LaravelLogsLayer\app\Exceptions\CustomExceptionHandler; use Ae3\LaravelLogsLayer\app\Observers\LogCaptureObserver; use Ae3\LaravelLogsLayer\app\Services\AbstractLogService; +use Illuminate\Contracts\Debug\ExceptionHandler as ExceptionHandlerContract; use Illuminate\Support\ServiceProvider; class LogsLayerServiceProvider extends ServiceProvider @@ -24,6 +26,8 @@ class LogsLayerServiceProvider extends ServiceProvider }); LogCaptureObserver::registerListeners(); + + $this->app->singleton(ExceptionHandlerContract::class, CustomExceptionHandler::class); } /**