问题
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