【发布时间】:2023-09-08 05:47:01
【问题描述】:
当发生 404 错误时,我需要能够记录/接收电子邮件。我可以在文档中看到如何为这些错误设置一个新模板,但我如何首先在我的控制器中捕获它们,以便我可以实现日志记录/电子邮件逻辑?
【问题讨论】:
标签: http-status-code-404 symfony
当发生 404 错误时,我需要能够记录/接收电子邮件。我可以在文档中看到如何为这些错误设置一个新模板,但我如何首先在我的控制器中捕获它们,以便我可以实现日志记录/电子邮件逻辑?
【问题讨论】:
标签: http-status-code-404 symfony
也许添加一个监听 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)
【讨论】:
GetResponseForExceptionEvent 是您必须用于异常的那个。我是否可以建议检查错误是否为404?否则 all 异常将被邮寄给您(如果需要,您可以使用 Monolog 配置)。