vendor/kunstmaan/admin-bundle/EventListener/ConsoleExceptionSubscriber.php line 27

Open in your IDE?
  1. <?php
  2. namespace Kunstmaan\AdminBundle\EventListener;
  3. use Psr\Log\LoggerInterface;
  4. use Symfony\Component\Console\ConsoleEvents;
  5. use Symfony\Component\Console\Event\ConsoleErrorEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. final class ConsoleExceptionSubscriber implements EventSubscriberInterface
  8. {
  9.     /** @var LoggerInterface */
  10.     private $logger;
  11.     public function __construct(LoggerInterface $logger)
  12.     {
  13.         $this->logger $logger;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             ConsoleEvents::ERROR => 'onConsoleError',
  19.         ];
  20.     }
  21.     public function onConsoleError(ConsoleErrorEvent $event)
  22.     {
  23.         $command $event->getCommand();
  24.         $error $event->getError();
  25.         if (null !== $command) {
  26.             $this->logCommandError($command$error);
  27.         }
  28.     }
  29.     private function logCommandError($command$error)
  30.     {
  31.         $message sprintf(
  32.             '%s: %s (uncaught error) at %s line %s while running console command `%s`',
  33.             \get_class($error),
  34.             $error->getMessage(),
  35.             $error->getFile(),
  36.             $error->getLine(),
  37.             $command->getName()
  38.         );
  39.         $this->logger->critical($message, ['error' => $error]);
  40.     }
  41. }