在这本食谱文章中,我们可以看到如何在服务中使用自定义渠道.但是如何在命令中使用自定义登录通道?
我创建了一个symfony2命令来执行某些操作.我想使用monolog记录我的命令完成的事情.
实际上,我想在另一个文件中为我的命令编写日志而不是应用程序的日志.
任何扩展的自定义命令ContainerAwareCommand都可以访问Symfony的服务容器.您可以定义在配置中登录自定义渠道的服务.
<services>
<service id="console.logger" parent="monolog.logger_prototype">
<argument index="0">mychannel</argument>
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
您可以通过以下方式从命令访问您的服务
$logger = $this->getContainer()->get('console.logger');
Run Code Online (Sandbox Code Playgroud)
此记录器将使用频道记录为"mychannel".
FYI默认记录器服务记录到频道"app".这可以在文件中看到
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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14234 次 |
| 最近记录: |