目前我正在使用基本的错误控制器,如下所示:
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中执行此操作?或者它应该在index.php中的ErrorController之外完成(因为Zend Framework ErrorHandler只处理没有路由,在动作控制器中缺少应用程序/操作异常和异常)?
答案 0 :(得分:2)
通知和警告不是(或不应该)是应用程序致命的。致命错误就像他们在锡上说的那样,有时无法捕捉到。但是,如果你真的需要,或许可以考虑一下: