64 lines
1.3 KiB
PHP
64 lines
1.3 KiB
PHP
<?php namespace App\Infrastructure;
|
|
|
|
use Exception;
|
|
use Psr\Log\LoggerInterface;
|
|
use Symfony\Component\Debug\ExceptionHandler as SymfonyDisplayer;
|
|
use Illuminate\Contracts\Debug\ExceptionHandler as ExceptionHandlerContract;
|
|
|
|
class ExceptionHandler implements ExceptionHandlerContract {
|
|
|
|
/**
|
|
* The log implementation.
|
|
*
|
|
* @var \Psr\Log\LoggerInterface
|
|
*/
|
|
protected $log;
|
|
|
|
/**
|
|
* Create a new exception handler instance.
|
|
*
|
|
* @param \Psr\Log\LoggerInterface $log
|
|
* @return void
|
|
*/
|
|
public function __construct(LoggerInterface $log)
|
|
{
|
|
$this->log = $log;
|
|
}
|
|
|
|
/**
|
|
* Report or log an exception.
|
|
*
|
|
* @param \Exception $e
|
|
* @return void
|
|
*/
|
|
public function report(Exception $e)
|
|
{
|
|
$this->log->error((string) $e);
|
|
}
|
|
|
|
/**
|
|
* Render an exception into a response.
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @param \Exception $e
|
|
* @return \Symfony\Component\HttpFoundation\Response
|
|
*/
|
|
public function render($request, Exception $e)
|
|
{
|
|
return (new SymfonyDisplayer)->createResponse($e);
|
|
}
|
|
|
|
/**
|
|
* Render an exception to the console.
|
|
*
|
|
* @param \Symfony\Component\Console\Output\OutputInterface $output
|
|
* @param \Exception $e
|
|
* @return void
|
|
*/
|
|
public function renderForConsole($output, Exception $e)
|
|
{
|
|
$output->writeln((string) $e);
|
|
}
|
|
|
|
}
|