Как получить регистратор с указанным каналом в Symfony Command? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь создать Команду Symfony, и я хочу записать, что происходит во время выполнения команды.Поэтому я пытаюсь создать канал регистрации в monolog.yaml:

monolog:
    channels: ['download_site']
    handlers:
        download_site:
            type: stream
            path: "%kernel.logs_dir%/download_site_%kernel.environment%.log"
            level: debug
            channels: ["download_site"]

и получить канал в

class DownloadSiteCommand extends Command
{
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $logger = $this->getContainer()->get('monolog.logger.download_site');
    }
}

Но когда я выполняю команду, выдается ошибка:

В строке DownloadSiteCommand.php 31:

Попытка вызова неопределенного метода с именем "getContainer" из класса "App \ Command \ Do wnloadSiteCommand".

1 Ответ

1 голос
/ 19 сентября 2019

Попробуйте что-то вроде этого

use Psr\Log\LoggerInterface;

class DownloadSiteCommand extends Command
{
    private $logger;

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

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $this->logger->info('...');
    }
}

services.yaml

App\Command\DownloadSiteCommand:
    tags:
        - { 'name': 'monolog.logger', 'channel': 'download_site' }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...