在生产中使用Symfony \ Component \ Debug \ Exception \ FatalErrorException异常是否正常?

时间:2016-05-25 08:42:29

标签: symfony

在我们的生产日志中,我们可以看到一些例外情况,例如Symfony\Component\Debug\Exception\FatalErrorException。我们有错误,我们会修复它们,但困扰我的是那些是“调试”类。

我们正在“prod”环境中运行,“调试”例外是否正常?或者我们错误配置了什么?

2 个答案:

答案 0 :(得分:0)

这可能是由于框架包所致,请参见https://github.com/symfony/symfony/blob/6eb5f93918d833954ca87c21900c5831e424f9a9/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php#L66ErrorHandler::register(null, false)->throwAt($this->container->getParameter('debug.error_handler.throw_at'), true);

这是故意的,下面是有关它的讨论:https://github.com/symfony/symfony/issues/11053

答案 1 :(得分:-1)

拥有异常与启用调试日志记录不同。

logger基本上container服务始终可用。您始终可以使用它来添加有关所执行代码的重要信息。每个环境有不同的日志配置是明智的。例如,prod环境不必记录404错误,但您可能希望在test环境中记录日志吗?您可以在config_prod.yml中排除该内容。请参阅:http://symfony.com/doc/current/cookbook/logging/monolog_regex_based_excludes.html

除了实际记录之外,如果达到某个阈值,monolog可以向您发送电子邮件。在prod,您可以monolog发送包含action_level: critical的电子邮件,在test,您可以通过action_level: error获得更多包含更多信息的电子邮件。通过设置level,您可以设置日志消息应包含在电子邮件中的最低级别。见http://symfony.com/doc/current/cookbook/logging/monolog_email.html

有关日志记录的其他信息,请访问:http://symfony.com/doc/current/cookbook/logging/index.html

要返回debug参数和Exception,Symfony在启用调试时表现不同。对于大多数标准应用程序,Web工具栏和分析器已启用,如果抛出异常,Symfony会显示异常页面。基本上,在debug中收集更多数据的方式。如果禁用调试,logger仍然存在。异常总是会发生,因为它们是未捕获的应用程序行为的结果(读取:错误)。我建议明智地使用记录器来获取包含足够信息的电子邮件来调试这些异常。