src/EventListener/KernelExceptionListener.php line 19

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use Psr\Log\LoggerInterface;
  4. use Symfony\Component\HttpFoundation\JsonResponse;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. class KernelExceptionListener
  7. {
  8.     private LoggerInterface $logger;
  9.     public function __construct(LoggerInterface $logger)
  10.     {
  11.         $this->logger $logger;
  12.     }
  13.     public function onKernelException(ExceptionEvent $event)
  14.     {
  15.         $exception $event->getThrowable();
  16.         $code $exception->getCode();
  17.         if (empty($code)) {
  18.             if (== $code && method_exists($exception'getStatusCode')) {
  19.                 $code $exception->getStatusCode();
  20.             } else {
  21.                 $code 500;
  22.             }
  23.         }
  24.         $data = [
  25.             'code' => $code,
  26.             'message' => $exception->getMessage(),
  27.         ];
  28.         if ('dev' == $_ENV['APP_ENV']) {
  29.             $data['file'] = $exception->getFile();
  30.             $data['line'] = $exception->getLine();
  31.             $data['trace'] = $exception->getTrace();
  32.         }
  33.         if (500 == $code) {
  34.             $this->logger->critical($exception);
  35.         }
  36.         $event->setResponse((new JsonResponse())
  37.             ->setContent(json_encode($data))
  38.         );
  39.     }
  40. }