From e7efe707a6d3bbb19c6fa332705ec4a522eb2478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Tobias=20de=20Freitas=20Neto?= Date: Wed, 30 Aug 2023 21:54:22 -0400 Subject: [PATCH] =?UTF-8?q?Adicionando=20um=20CustomHandler=20para=20ser?= =?UTF-8?q?=20utilizado=20nas=20aplica=C3=A7=C3=B5es?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Esse custom handler permite capturar corretamente exceções não tratadas no código. --- src/app/Exceptions/CustomExceptionHandler.php | 64 +++++++++++++++++++ .../Providers/LogsLayerServiceProvider.php | 4 ++ 2 files changed, 68 insertions(+) create mode 100644 src/app/Exceptions/CustomExceptionHandler.php 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); } /**