Symfony 2:登录到特定文件

时间:2011-11-23 11:37:25

标签: logging symfony monolog

我在发布问题之前搜索了很多。我没有找到明确的答案,所以就是这样。

我想将消息作为dev.log或prod.log记录在不同的日志文件中。我的意思是一个不会被Symfony核心消息篡改的文件。我听说过monolog中的记录器和处理程序,但不是很清楚。

如何将来自我的控制器,模型的消息记录到特定的日志文件?

2 个答案:

答案 0 :(得分:23)

您必须将信息添加到services.yml文件,而不是config.yml文件:

所以在services.ymlservices.xml )中你有

my_service.logger:
    class:     Symfony\Bridge\Monolog\Logger
    arguments: [app]
    calls:
        - [pushHandler, [@my_service.logger_handler]]

my_service.logger_handler:
    class:     Monolog\Handler\StreamHandler       
    arguments: [%kernel.logs_dir%/%kernel.environment%.admin.log, 200]

并在您使用的控制器操作中:

$logger = $this->get('my_service.logger');

答案 1 :(得分:2)

上面的答案对我来说非常好。我必须调整它,因为我的配置是在xml而不是yaml。

这是完全相同的配置,但使用的是xml。

<service id="my_service.logger" class="Symfony\Bridge\Monolog\Logger">
    <argument type="string">app</argument>
    <call method="pushHandler">
        <argument type="service" id="my_service.logger_handler" />
    </call>
</service>
<service id="my_service.logger_handler" class="Monolog\Handler\StreamHandler">
    <argument>type="string">%kernel.logs_dir%/%kernel.environment%.license.log</argument>
    <argument type="string">200</argument>
</service>