Как использовать регистратор в консольной команде на Symfony 4? - PullRequest
0 голосов
/ 14 февраля 2019

Я недавно перешел от использования Symfony 2.7 до 4.2.

Ранее в своих командах для входа в файл я использовал что-то вроде:

$logger = $this->getContainer()->get('logger');
$logger->error('put this in log');

были изменены.Я могу войти с контроллера после https://symfony.com/doc/current/logging.html

Я могу вывести на консоль, используя:

$logger = new ConsoleLogger($output);
$logger->log('error','Put this in the log file');

Но сколько бы я ни смотрел на информацию на сайте Symfony, я просто могу 't выяснить, как войти в файл с помощью symfony 4.2 из команды.

1 Ответ

0 голосов
/ 22 февраля 2019

Вам необходимо добавить регистратор в вашу команду, аналогично тому, как это показано в примере с контроллером.


class ExampleCommand extends Command {

    protected static $defaultName = 'do:something:awesome';
    /**
     * @var \Psr\Log\LoggerInterface
     */
    private $logger;

    public function __construct(  LoggerInterface $logger  ) {

        $this->$logger = $logger;

        parent::__construct(  );
    }

    public function execute( InputInterface $input, OutputInterface $output ) {
        $io = new SymfonyStyle( $input, $output );
        $this->logger->info('Logging like a boss at ' . __FILE__ . ':' . __LINE__);

       // the rest of your command
   }

Ваша команда будет использовать ту же конфигурацию регистратора, что и остальная часть вашего проекта, и вы 'Я буду регистрироваться в файлах в кратчайшие сроки.

...