我正在尝试将旧的旧项目迁移到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']);
}
});
}