vendor/sentry/sentry-symfony/src/EventListener/ConsoleListener.php line 52
<?phpdeclare(strict_types=1);namespace Sentry\SentryBundle\EventListener;use Sentry\Event;use Sentry\EventHint;use Sentry\ExceptionMechanism;use Sentry\State\HubInterface;use Sentry\State\Scope;use Symfony\Component\Console\Event\ConsoleCommandEvent;use Symfony\Component\Console\Event\ConsoleErrorEvent;use Symfony\Component\Console\Event\ConsoleTerminateEvent;use Symfony\Component\Console\Input\ArgvInput;/*** This listener handles all errors thrown while running a console command and* logs them to Sentry.** @final since version 4.1*/class ConsoleListener{/*** @var HubInterface The current hub*/private $hub;/*** @var bool Whether to capture console errors*/private $captureErrors;/*** Constructor.** @param HubInterface $hub The current hub* @param bool $captureErrors Whether to capture console errors*/public function __construct(HubInterface $hub, bool $captureErrors = true){$this->hub = $hub;$this->captureErrors = $captureErrors;}/*** Handles the execution of a console command by pushing a new {@see Scope}.** @param ConsoleCommandEvent $event The event*/public function handleConsoleCommandEvent(ConsoleCommandEvent $event): void{$scope = $this->hub->pushScope();$command = $event->getCommand();$input = $event->getInput();if (null !== $command && null !== $command->getName()) {$scope->setTag('console.command', $command->getName());}if ($input instanceof ArgvInput) {$scope->setExtra('Full command', (string) $input);}}/*** Handles the termination of a console command by popping the {@see Scope}.** @param ConsoleTerminateEvent $event The event*/public function handleConsoleTerminateEvent(ConsoleTerminateEvent $event): void{$this->hub->popScope();}/*** Handles an error that happened while running a console command.** @param ConsoleErrorEvent $event The event*/public function handleConsoleErrorEvent(ConsoleErrorEvent $event): void{$this->hub->configureScope(function (Scope $scope) use ($event): void {$scope->setTag('console.command.exit_code', (string) $event->getExitCode());if ($this->captureErrors) {$hint = EventHint::fromArray(['exception' => $event->getError(),'mechanism' => new ExceptionMechanism(ExceptionMechanism::TYPE_GENERIC, false),]);$this->hub->captureEvent(Event::createEvent(), $hint);}});}}