Symfony 2:登录到特定文件
Posted
技术标签:
【中文标题】Symfony 2:登录到特定文件【英文标题】:Symfony 2 : Log into a specific file 【发布时间】:2012-01-04 16:56:41 【问题描述】:在发布我的问题之前,我进行了很多搜索。我没有找到明确的答案,所以在这里。
我想将消息记录在另一个日志文件中,如 dev.log 或 prod.log。我的意思是一个不会被 Symfony 核心消息污染的文件。在monolog中听说过logger和handler,但不是很清楚。
如何将来自控制器、模型的消息记录到特定的日志文件中?
【问题讨论】:
可能重复:***.com/questions/8169114/… 这是重复的问题,因为您的链接只是解决方案的一部分。我试图在 app/config/config.yml 中添加此服务,但无法使其工作。到目前为止没有创建日志文件。 【参考方案1】:您必须将信息添加到 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');
【讨论】:
感谢您的回答,但对于 NetBeans,我在使用时遇到了错误:[@my_service.logger_handler] 为了使其正常工作,我必须添加引号:["@my_service.logger_handler"] 希望如此会有帮助的。 对我来说它只有在我将它添加到 services: 之后才有效,而不是直接在 yml 文件中 此答案应设为最佳答案。小心引号【参考方案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>
【讨论】:
以上是关于Symfony 2:登录到特定文件的主要内容,如果未能解决你的问题,请参考以下文章