我需要能够在发生404错误时记录/接收电子邮件。我可以在文档中看到如何为这些错误设置一个新模板,但是如何在控制器中首先捕获它们以便我可以实现日志记录/电子邮件逻辑?
答案 0 :(得分:1)
也许添加一个侦听kernel.exception事件的事件监听器会这样做吗? 查看http://symfony.com/doc/current/book/internals.html#kernel-exception-event以及http://symfony.com/doc/current/reference/dic_tags.html#dic-tags-kernel-event-listener
一个小例子:
1)创建自定义侦听器
//bundles/Acme/AcmeBundle/Listener/CustomListener.php
namespace Acme\AcmeBundle\Listener;
use Symfony\Component\EventDispatcher\Event;
public class CustomListener {
public function onKernelException(Event $event) {
//Get hold of the exception
$exception = $event->getException();
//Do the logging
// ...
}
}
2)将监听器添加到您的配置
//config.yml
services:
kernel.listener.your_listener_name:
class: Acme\AcmeBundle\Listener\CustomListener
tags:
- { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
要掌握日志记录或邮件(Swiftmailer)服务,您可以考虑将它们注入监听器(http://symfony.com/doc/current/book/service_container.html#referencing-injecting-services)< / p>