Любая пользовательская команда, которая расширяет ContainerAwareCommand
, имеет доступ к служебному контейнеру Symfony.Вы можете определить сервис, который регистрирует пользовательский канал в вашей конфигурации.
<services>
<service id="console.logger" parent="monolog.logger_prototype">
<argument index="0">mychannel</argument>
</service>
</services>
Вы можете получить доступ к своей услуге из команды следующим образом
$logger = $this->getContainer()->get('console.logger');
Этот регистратор будет регистрироваться с каналом как "mychannel".
FYI Регистратор по умолчаниюЖурналы сервиса на канал "приложение".Это можно увидеть в файле Symfony/Bundle/MonologBundle/Resources/config/monolog.xml
.Это также место, где определена служба по умолчанию logger
.
<services>
<service id="monolog.logger" parent="monolog.logger_prototype" public="false">
<argument index="0">app</argument>
</service>
<service id="logger" alias="monolog.logger" />
<service id="monolog.logger_prototype" class="%monolog.logger.class%" abstract="true">
<argument /><!-- Channel -->
</service>
</services>