В настоящее время я использую базовый контроллер ошибок, который выглядит следующим образом:
class ErrorController extends My_MyController
{
public function errorAction()
{
$errors = $this->_getParam('error_handler');
switch ($errors->type) {
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ROUTE:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
// 404 error -- controller or action not found
$this->getResponse()
->setRawHeader('HTTP/1.1 404 Not Found');
$this->view->headTitle('HTTP/1.1 404 Not Found');
$this->view->message = 'HTTP/1.1 404 Not Found';
break;
default:
// application error; display error page, but don't change
// status code
// Log the exception:
$exception = $errors->exception;
$log = new Zend_Log(
new Zend_Log_Writer_Stream(
BASE_PATH . '/logs/applicationException.log'
)
);
$log->debug($exception->getMessage() . "\n" .
$exception->getTraceAsString());
$this->view->headTitle('HTTP/1.1 404 Not Found');
$this->view->message = 'Application error';
break;
}
$this->view->exception = $errors->exception;
}
}
Это, однако, только ловит и регистрирует исключения приложения. Он не будет регистрировать любые предупреждения, уведомления и фатальные ошибки.
Я бы тоже хотел это записать. Есть ли рекомендуемый способ сделать это в ErrorController? Или это должно быть сделано вне ErrorController в index.php (поскольку Zend Framework ErrorHandler не будет обрабатывать только маршрут, пропущенные исключения приложений / действий и исключения в контроллерах действий)?