src/Event/ApiExceptionListener.php line 36

Open in your IDE?
  1. <?php
  2. declare(strict_types 1);
  3. /*
  4.  * To change this license header, choose License Headers in Project Properties.
  5.  * To change this template file, choose Tools | Templates
  6.  * and open the template in the editor.
  7.  */
  8. namespace App\Event;
  9. use App\Exception\ApiExceptionInterface;
  10. // LG 20240409 déac use Exception;
  11. // LG 20240409 déac use Psr\Log\LoggerInterface;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
  14. use App\PaaBundle\Component\Logs;       // LG 20240409
  15. /**
  16.  * Description of ExceptionListener
  17.  *
  18.  * @author avill
  19.  */
  20. class ApiExceptionListener
  21. {
  22. // LG 20240409 déac    private $logger;
  23.     private $project_dir ;       // LG 20240409
  24.  
  25. // LG 20240409 old    public function __construct(LoggerInterface $logger)
  26.     public function __construct($project_dir)
  27.     {
  28. // LG 20240409 déac        $this->logger = $logger;
  29.         $this->project_dir $project_dir;       // LG 20240409
  30.     }
  31.  
  32.     public function onKernelException(GetResponseForExceptionEvent $event)
  33.     {
  34.         if (!$event->getException() instanceof ApiExceptionInterface) {
  35.             return;
  36.         }
  37.  
  38.         $response = new Response($event->getException()->getMessage(), $event->getException()->getStatusCode());
  39.         $event->setResponse($response);
  40.  
  41.         $this->log($event->getException());
  42.     }
  43.  
  44.     private function log(ApiExceptionInterface $exception){
  45. // LG 20240409 début
  46. ////        $log = [
  47. ////            'code' => $exception->getStatusCode(),
  48. ////            'message' => $exception->getMessage(),
  49. ////            'called' => [
  50. ////                'file' => $exception->getTrace()[0]['file'],
  51. ////                'line' => $exception->getTrace()[0]['line'],
  52. ////            ],
  53. ////            'occurred' => [
  54. ////                'file' => $exception->getFile(),
  55. ////                'line' => $exception->getLine(),
  56. ////            ],
  57. ////        ];
  58. //// 
  59. ////        if ($exception->getPrevious() instanceof Exception) {
  60. ////            $log += [
  61. ////                'previous' => [
  62. ////                    'message' => $exception->getPrevious()->getMessage(),
  63. ////                    'exception' => get_class($exception->getPrevious()),
  64. ////                    'file' => $exception->getPrevious()->getFile(),
  65. ////                    'line' => $exception->getPrevious()->getLine(),
  66. ////                ],
  67. ////            ];
  68. ////        }
  69. //        file_put_contents('testArthur2.log', $exception);
  70. //
  71. //
  72. ////        var_dump($exception);
  73. ////        $this->logger->error(json_encode($log));
  74.         $message sprintf('Erreur APIException : %s avec le code : %s'$exception->getMessage(), $exception->getCode());
  75.         Logs::setProjectDir($this->project_dir);
  76.         $stackTrace $exception->getTraceAsString();
  77.         $stackTrace str_replace("#"chr(9) . "#"$stackTrace);
  78.         Logs::setStackTrace($stackTrace);
  79.         Logs::critical($message);
  80. // LG 20240409 fin
  81.     }
  82. }