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

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. /**
  8.  * Class ConsoleExceptionSubscriber.
  9.  */
  10. final class ConsoleExceptionSubscriber implements EventSubscriberInterface
  11. {
  12.     /** @var LoggerInterface */
  13.     private $logger;
  14.     /**
  15.      * ConsoleExceptionListener constructor.
  16.      *
  17.      * @param LoggerInterface $logger
  18.      */
  19.     public function __construct(LoggerInterface $logger)
  20.     {
  21.         $this->logger $logger;
  22.     }
  23.     /**
  24.      * @return array
  25.      */
  26.     public static function getSubscribedEvents()
  27.     {
  28.         return [
  29.             ConsoleEvents::ERROR => 'onConsoleError',
  30.         ];
  31.     }
  32.     /**
  33.      * @param ConsoleErrorEvent $event
  34.      */
  35.     public function onConsoleError(ConsoleErrorEvent $event)
  36.     {
  37.         $command $event->getCommand();
  38.         $error $event->getError();
  39.         if (null !== $command) {
  40.             $this->logCommandError($command$error);
  41.         }
  42.     }
  43.     /**
  44.      * @param $command
  45.      * @param $error
  46.      */
  47.     private function logCommandError($command$error)
  48.     {
  49.         $message sprintf(
  50.             '%s: %s (uncaught error) at %s line %s while running console command `%s`',
  51.             \get_class($error),
  52.             $error->getMessage(),
  53.             $error->getFile(),
  54.             $error->getLine(),
  55.             $command->getName()
  56.         );
  57.         $this->logger->critical($message, ['error' => $error]);
  58.     }
  59. }