Silex,ErrorHandler抛出每个错误级别作为异常(如何避免?)

时间:2016-05-07 12:56:21

标签: php symfony silex

我正在尝试将旧的旧项目迁移到silex。我遇到错误处理程序的问题。

在遗留引导程序PHP中,我们使用自定义errorHandler()来处理所有错误级别并将非致命错误过滤到邮件日志/日志文件。为此,我们将error_reporting设置为E_ALL,以便每个错误都会通过errorHandler()。

我不太明白Symfony的ErrorHandler是如何工作的,有没有办法根据错误严重程度过滤错误?现在它似乎在每个错误上停止我的应用程序。例如,E_NOTICE错误被转换为Exception并被抛出到ExceptionHandler,而ExceptionHandler又会停止应用程序执行并呈现相当多的HTML异常跟踪(我并不是真的想要)。但是,我想设置一些错误过滤,以便E_ _WARNING将记录到monolog,E _ _ERROR会抛出HTML异常,将其记录在monolog中并发送邮件通知。我怎么能做到这一点?

总之,我需要告诉ErrorHandler / ExceptionHandler它不应该暂停应用程序执行并抛出HTML错误,而应该只记录它们并继续。

现在我已经创建了自己的类“Application”,它扩展了SilexApp。在该课程中,我设置了提供者,路由和错误处理程序 以下是我的errorHandler的注册方式。

private function registerErrorHandlers()
    {
        $exHandler = ExceptionHandler::register();
        $errHandler = ErrorHandler::register();

        //Use PHP closure for the shutdown handler.
        register_shutdown_function(function () {
            if(!is_null($e = error_get_last()))
            {
                $errHandler = new ErrorHandler();
                $errHandler->handleError($e['type'],$e['message'],$e['file'],$e['line']);
            }
        });
    }

0 个答案:

没有答案