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