这是this question的后续问题,这并不重要。
我编写了以下前端控制器插件:
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$response = $this->getResponse();
$monitor = Zend_Registry::get('monitor');
if ($response->isException())
{
$monitor->log($response);
}
}
其中$ monitor是自定义DB日志记录类的实例(扩展Zend_Log)。
在Monitor的log方法中,我循环遍历$ response-> getException()返回的Zend_Exceptions数组。
出于测试目的,我通过动作中的异常:
throw new Zend_Exception('the big test', 555);
大多数东西按预期工作,异常被写入数据库。
但是,它写了两次。为什么呢?
答案 0 :(得分:3)
因为调度循环被调用两次。首先是当前操作,然后是默认值:error:error :)将日志放入dispatchLoopShutdown()
方法