2014-09-23 147 views
5

我正在尝试在Symfony中配置电子邮件日志记录。我跟着the cookbook,它的工作原理,但我有致命错误的问题。在symfony中记录致命错误

这些错误未记录在产品模式中。我想到,当我将Debug::enable();添加到app.php时,错误被记录下来,但是我仍然没有收到电子邮件。

下面是相关配置:

mail: 
     type:   fingers_crossed 
     action_level: critical 
     handler:  buffer 
    buffer: 
     type: buffer 
     handler: swift 
    swift: 
     type:  swift_mailer 
     from_email: %error_mail_from% 
     to_email: %error_mail_to% 
     subject: %error_mail_subject% 
     level:  debug 
+0

您可能会对错误至关重要,因为您会给予400x消息以及500x消息。但@Yann Eugone是正确的,一个致命的错误关闭了所有的东西,抓住这些并不现实。当然,如果你在生产中遇到致命的错误,那就意味着你的测试方法需要工作。 – Cerad 2014-09-23 14:08:10

+1

@Cerad 4xx不是问题。即使有人使用ipad访问网页,它们也会发生(该工具未针对该网页进行优化),并且它要求它是Apple-touch-icon,所以我不在意这些。我也知道一个致命的错误不应该发生在生产中,但如果它发生了......我想知道! – Nemo64 2014-09-24 08:31:58

回答

1

你正在使用哪个Symfony版本?

看起来像从2.3有一个很好的改进,可以让你做到这一点(记录致命错误)。看看这个:https://github.com/symfony/symfony/pull/6474

+0

我有多个symfony实例。最古老的是2.1。我会看看它是否适用于更新的版本。 – Nemo64 2014-11-06 10:38:41

0

我有同样的问题(记录在生产致命的错误回报,但邮件没有发送),我设法使它工作添加到我的config_prod.php:

services: 
    mydebug.debug_handlers_listener: 
       class: Symfony\Component\HttpKernel\EventListener\DebugHandlersListener 
       arguments: 
        - { 0:"@http_kernel", 1:'terminateWithException'} 
       tags: 
        - { name: kernel.event_subscriber } 

我发现该服务在\vendor\symfony\symfony\src\Symfony\Bundle\FrameworkBundle\Resources\config\debug.xml中定义,但不在debug_prod.xml中定义。

回调到terminateWithException它在我的应用程序中正常工作。