src/SupplierApiBundle/Services/SupplierRequestLogger.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\SupplierApiBundle\Services;
  3. use App\Entity\Supplier;
  4. use Psr\Log\LoggerInterface;
  5. use Symfony\Component\HttpKernel\Event\ResponseEvent;
  6. use Symfony\Component\Security\Core\Security;
  7. class SupplierRequestLogger
  8. {
  9.     /**
  10.      * @var LoggerInterface
  11.      */
  12.     private $logger;
  13.     /**
  14.      * @var string
  15.      */
  16.     private $host;
  17.     /**
  18.      * @var Security
  19.      */
  20.     private $security;
  21.     public function __construct(LoggerInterface $loggerstring $hostSecurity $security)
  22.     {
  23.         $this->logger   $logger;
  24.         $this->host     $host;
  25.         $this->security $security;
  26.     }
  27.     public function onKernelResponse(ResponseEvent $event)
  28.     {
  29.         $request    $event->getRequest();
  30.         $response   $event->getResponse();
  31.         /** @var Supplier $user */
  32.         $user       $this->security->getUser();
  33.         if ($this->host === $request->getHost()) {
  34.             $this->logger->info(sprintf(
  35.                 "%s %s, IP = %s, supplier = %s, status = %d, response = %s",
  36.                 $request->getMethod(),
  37.                 $request->getUri(),
  38.                 $request->getClientIp(),
  39.                 $this->getUserName($user),
  40.                 $response->getStatusCode(),
  41.                 $response->getContent()
  42.             ));
  43.         }
  44.     }
  45.     private function getUserName($user): string
  46.     {
  47.         if ($user && $user instanceof Supplier) {
  48.             return $user->getCompanyName().' ('.$user->getId().')';
  49.         }
  50.         return 'Anonymous';
  51.     }
  52. }