Symfony2记录404错误

时间:2011-08-16 15:45:45

标签: http-status-code-404 symfony

我需要能够在发生404错误时记录/接收电子邮件。我可以在文档中看到如何为这些错误设置一个新模板,但是如何在控制器中首先捕获它们以便我可以实现日志记录/电子邮件逻辑?

1 个答案:

答案 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>