PHP Classes

File: vendor/symfony/console/EventListener/ErrorListener.php

Recommend this page to a friend!
  Classes of Renato Lucena   PHP Pokemon Script   vendor/symfony/console/EventListener/ErrorListener.php   Download  
File: vendor/symfony/console/EventListener/ErrorListener.php
Role: Class source
Content type: text/plain
Description: Class source
Class: PHP Pokemon Script
Provides an API to manage a database of Pokemons
Author: By
Last change:
Date: 6 years ago
Size: 2,808 bytes
 

Contents

Class file image Download
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Symfony\Component\Console\EventListener;

use
Psr\Log\LoggerInterface;
use
Symfony\Component\Console\ConsoleEvents;
use
Symfony\Component\Console\Event\ConsoleErrorEvent;
use
Symfony\Component\Console\Event\ConsoleEvent;
use
Symfony\Component\Console\Event\ConsoleTerminateEvent;
use
Symfony\Component\EventDispatcher\EventSubscriberInterface;

/**
 * @author James Halsall <james.t.halsall@googlemail.com>
 * @author Robin Chalas <robin.chalas@gmail.com>
 */
class ErrorListener implements EventSubscriberInterface
{
    private
$logger;

    public function
__construct(LoggerInterface $logger = null)
    {
       
$this->logger = $logger;
    }

    public function
onConsoleError(ConsoleErrorEvent $event)
    {
        if (
null === $this->logger) {
            return;
        }

       
$error = $event->getError();

        if (!
$inputString = $this->getInputString($event)) {
            return
$this->logger->error('An error occurred while using the console. Message: "{message}"', array('error' => $error, 'message' => $error->getMessage()));
        }

       
$this->logger->error('Error thrown while running command "{command}". Message: "{message}"', array('error' => $error, 'command' => $inputString, 'message' => $error->getMessage()));
    }

    public function
onConsoleTerminate(ConsoleTerminateEvent $event)
    {
        if (
null === $this->logger) {
            return;
        }

       
$exitCode = $event->getExitCode();

        if (
0 === $exitCode) {
            return;
        }

        if (!
$inputString = $this->getInputString($event)) {
            return
$this->logger->error('The console exited with code "{code}"', array('code' => $exitCode));
        }

       
$this->logger->error('Command "{command}" exited with code "{code}"', array('command' => $inputString, 'code' => $exitCode));
    }

    public static function
getSubscribedEvents()
    {
        return array(
           
ConsoleEvents::ERROR => array('onConsoleError', -128),
           
ConsoleEvents::TERMINATE => array('onConsoleTerminate', -128),
        );
    }

    private static function
getInputString(ConsoleEvent $event)
    {
       
$commandName = $event->getCommand() ? $event->getCommand()->getName() : null;
       
$input = $event->getInput();

        if (
method_exists($input, '__toString')) {
            if (
$commandName) {
                return
str_replace(array("'$commandName'", "\"$commandName\""), $commandName, (string) $input);
            }

            return (string)
$input;
        }

        return
$commandName;
    }
}