13

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

我想将消息记录在另一个日志文件中,如 dev.log 或 prod.log。我的意思是一个不会被 Symfony 核心消息污染的文件。我听说过独白中的logger和handler,但不是很清楚。

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

4

2 回答 2

24

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

所以在services.yml(services.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');
于 2012-02-01T16:43:44.160 回答
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>
于 2013-08-27T06:51:33.150 回答