Я пытаюсь записывать журналы в определенный файл, используя определенный канал в Monolog (называемый encuestas_cloud) внутри Команды в Symfony 3.4, но я не могу этого сделать.
Я прочитал документы Symfonyи искал в Интернете, и я думаю, что он хорошо настроен, но я получаю ошибку.
Код:
В config_dev.yml:
monolog:
handlers:
main:
type: stream
path: '%kernel.logs_dir%/%kernel.environment%.log'
level: debug
channels: ['!event']
...
encuestas_cloud_logger:
#type: rotating_file
type: stream
path: 'D:/web/xampp/htdocs/temp/logs/encuestas_cloud.log'
level: info
channels: ['encuestas_cloud']
max_files: 10
В службах.yml
services:
_defaults:
autowire: true
autoconfigure: true
public: false
AppBundle\Command\EncuestasCloudCommand\:
resource: '../../src/AppBundle/Command/EncuestasCloudCommand.php'
arguments: ['@logger']
public: true
tags:
- { name: monolog.logger, channel: encuestas_cloud }
Команда:
// src/AppBundle/Command/EncuestasCloudCommand.php
namespace AppBundle\Command;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
...
class EncuestasCloudCommand extends ContainerAwareCommand
{
private $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
parent::__construct();
}
...
protected function execute(InputInterface $input, OutputInterface $output)
{
$logger = $this->logger;
$logger->addInfo('My logger is now ready');
Когда я ее выполняю, я получаю:
В строке LoggerChannelPass.php 98:
Ошибка конфигурации Monolog: Канал регистрации "encuestas_cloud", назначенный обработчику
"encuestas_cloud_logger", не существует.
В строке ContainerBuilder.php 1063:
Вы запросили несуществующую услугу "monolog.logger.encuestas_cloud".
Если я добавлю channels: ['encuestas_cloud']
в config_dev.yml
monolog:
channels: ['encuestas_cloud']
handlers:
main:
type: stream
...
Ошибка исчезнет, но журнал все равно перейдет в общий файл журнала: dev.log
Пожалуйста, кто-нибудь может мне помочь выяснить, что не так с конфигурацией?
Спасибо большое !!!