src/PaaBundle/Component/EventListener/ExceptionListener.php line 29

Open in your IDE?
  1. <?php
  2. namespace App\PaaBundle\Component\EventListener;
  3. use Symfony\Component\HttpFoundation\Response;
  4. //
  5. //use Symfony\Component\HttpKernel\Event\ExceptionEvent; [à utiliser  à la place GetResponseForExceptionEvent; pour les version supérieur de Symfony (exemple Symfony 4.4 et Symfony 5.1)]
  6. use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
  7. use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
  8. use App\PaaBundle\Component\MyLogger;
  9. use App\PaaBundle\Component\Logs;
  10. use Monolog\Logger;
  11. use Monolog\Handler\StreamHandler;
  12. use Monolog\Handler\FirePHPHandler;
  13. use Monolog\Formatter\LineFormatter;
  14. use Symfony\Component\HttpKernel\KernelInterface;
  15. class ExceptionListener {
  16.     /**
  17.      * @var string
  18.      */
  19.     private $project_dir;
  20.     public function __construct($project_dir) {
  21.         $this->project_dir $project_dir;
  22.     }
  23.     public function onKernelException(GetResponseForExceptionEvent $event) {
  24. // remplacer GetRepsonseForExceptionEvent par ExceptionEvent pour les version supérieur de Symfony (exemple Symfony 4.4 et Symfony 5.1)
  25.         if ($_ENV['APP_ENV'] === 'prod') {
  26. //            You get the exception object from the received event
  27. //            getThrowable(); à utiliser pour les version supérieur de Symfony (exemple Symfony 4.4 et Symfony 5.1)
  28. //            $exception = $event->getThrowable();
  29.             $exception $event->getException();
  30.             $message sprintf('Error: %s with code: %s'$exception->getMessage(), $exception->getCode());
  31. //            Customize your response object to display the exception details
  32.             Logs::setProjectDir($this->project_dir);
  33.             $stackTrace $exception->getTraceAsString();
  34.             $stackTrace str_replace("#"chr(9) . "#"$stackTrace);
  35.             Logs::setStackTrace($stackTrace);
  36.             Logs::critical($message);
  37.         }
  38.     }
  39. //    protected function buildStackTrace(array $paTrace) {
  40. //        $stackTrace = "test" ;
  41. //        return $stackTrace;
  42. //    }
  43. }