我正在構建一個監視解決方案,用於記錄PHP錯誤,未捕獲的異常以及用戶想要登錄到數據庫表的其他任何內容。 Zend Server中的監控解決方案的替代品。掛鉤到錯誤處理週期
我已經寫了一個擴展Zend_Log並可以處理所有提到的情況的Monitor類。 我的目標是將配置減少到一個地方,這將是Bootstrap。目前我正在初始化顯示器這樣的:
protected function _initMonitor()
{
$config = Zend_Registry::get('config');
$monitorDb = Zend_Db::factory($config->resources->db->adapter, $config->resources->db->params);
$monitor = new Survey_Monitor(new Zend_Log_Writer_Db($monitorDb, 'logEntries'), $config->projectName);
$monitor->registerErrorHandler()->logExceptions();
}
的registerErrorHandler()方法使PHP錯誤日誌記錄到數據庫中,logExceptions()方法是一個擴展,只是設置一個保護標誌。
在ErrorController errorAction我加入下面幾行:
//use the monitor to log exceptions, if enabled
$monitor = Zend_Registry::get('monitor');
if (TRUE == $monitor->loggingExceptions)
{
$monitor->log($errors->exception);
}
我想避免添加代碼到ErrorController不過,我寧願動態註冊一個插件。這將使用戶更容易集成到現有項目中。
問題:我可以註冊一個使用postDispatch掛鉤的控制器插件並獲得相同的效果嗎?我不明白什麼事件觸發errorAction,如果在電路的多個階段有多個事件,我是否需要使用多個鉤子?
您可以在插件中存儲異常,並檢查存儲的堆棧和響應堆棧是否相同。然後跳過處理。 – Xerkus 2011-03-20 19:03:45