Symfony 2 : Log into a specific file

不想你离开。 提交于 2019-12-04 10:24:37

问题


I searched a lot before posting my question. I didn't find a clear answer, so here it is.

I want to log messages in a different log file as dev.log or prod.log. I mean a file which won't be poluted by Symfony core messages. I heard about logger and handler in monolog, but it's not very clear.

How can I log messages from my controllers, model to a specific log file ?


回答1:


You have to add the info to the services.yml file, not the config.yml file:

So in services.yml (or services.xml) you have

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]

and in your controller action you use:

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



回答2:


The answer above worked perfectly fine for me. I had to adapt it though as my configuration was in xml and not yaml.

Here is the exact same configuration but using 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>


来源:https://stackoverflow.com/questions/8241528/symfony-2-log-into-a-specific-file

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!