在我们的生产日志中,我们可以看到一些例外情况,例如Symfony\Component\Debug\Exception\FatalErrorException
。我们有错误,我们会修复它们,但困扰我的是那些是“调试”类。
我们正在“prod”环境中运行,“调试”例外是否正常?或者我们错误配置了什么?
答案 0 :(得分:0)
这可能是由于框架包所致,请参见https://github.com/symfony/symfony/blob/6eb5f93918d833954ca87c21900c5831e424f9a9/src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php#L66:ErrorHandler::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
仍然存在。异常总是会发生,因为它们是未捕获的应用程序行为的结果(读取:错误)。我建议明智地使用记录器来获取包含足够信息的电子邮件来调试这些异常。