src/Framework/EventListener/LoggerEventListener.php line 35

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\Framework\EventListener;
  3. use Exception;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Component\HttpKernel\Event\ExceptionEvent;
  6. use Symfony\Component\HttpKernel\Event\RequestEvent;
  7. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  8. use Symfony\Component\HttpKernel\HttpKernelInterface;
  9. class LoggerEventListener
  10. {
  11.     private LoggerInterface $logger;
  12.     public function __construct(LoggerInterface $logger)
  13.     {
  14.         $this->logger $logger;
  15.     }
  16.     public function onRequest(RequestEvent $event): void
  17.     {
  18.         if ($event->getRequestType() !== HttpKernelInterface::MASTER_REQUEST) {
  19.             return;
  20.         }
  21.         $request $event->getRequest();
  22.         $content $request->getContent();
  23.         $this->logger->info('API Request Started', [
  24.             'body' => $content,
  25.         ]);
  26.     }
  27.     public function onResponse(ResponseEvent $event): void
  28.     {
  29.         $response $event->getResponse();
  30.         $extra = [
  31.             'status' => $response->getStatusCode(),
  32.             'body' => json_decode($response->getContent(), true),
  33.         ];
  34.         $this->logger->info('API Request Ended'$extra);
  35.     }
  36.     public function onException(ExceptionEvent $event): void
  37.     {
  38.         $exception $event->getThrowable();
  39.         $log = [
  40.             'type' => $exception::class,
  41.             'message' => $exception->getMessage(),
  42.             'called' => [
  43.                 // 'file' => $exception->getTrace()[0]['file'],
  44.                 // 'line' => $exception->getTrace()[0]['line'],
  45.             ],
  46.             'occurred' => [
  47.                 'file' => $exception->getFile(),
  48.                 'line' => $exception->getLine(),
  49.             ],
  50.         ];
  51.         if ($exception->getPrevious() instanceof Exception) {
  52.             $log += [
  53.                 'previous' => [
  54.                     'message' => $exception->getPrevious()->getMessage(),
  55.                     'exception' => $exception->getPrevious()::class,
  56.                     'file' => $exception->getPrevious()->getFile(),
  57.                     'line' => $exception->getPrevious()->getLine(),
  58.                 ],
  59.             ];
  60.         }
  61.         $this->logger->error('Uncaught Exception: ' json_encode($log));
  62.     }
  63. }