Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Symfony命令中使用指定通道获取记录器?_Symfony - Fatal编程技术网

如何在Symfony命令中使用指定通道获取记录器?

如何在Symfony命令中使用指定通道获取记录器?,symfony,Symfony,我正在尝试创建一个symfony命令,我想记录在命令执行过程中发生的事情。因此,我尝试在monolog.yaml中创建一个记录器通道: monolog: channels: ['download_site'] handlers: download_site: type: stream path: "%kernel.logs_dir%/download_site_%kernel.environment%.log"

我正在尝试创建一个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行中:

试图调用类“App\Command\Do”中名为“getContainer”的未定义方法 wnloadSiteCommand”


试试这样的

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('...');
    }
}
服务.亚马尔

App\Command\DownloadSiteCommand:
    tags:
        - { 'name': 'monolog.logger', 'channel': 'download_site' }

它是有效的,我对symfony不熟悉,对
服务中的
标签感到困惑。yaml
,你能解释一下
标签
,以及ti是如何使用monolog的吗?