我有一个扩展yii \ rest \ ActiveController的控制器。我已经覆盖了beforeAction()方法,将部分请求记录到数据库中(我将此id存储在控制器的私有变量中)。然后在afterAction()方法中 - 我用响应代码+结果更新相应的日志ID。
如果我有2xx错误,这一切都可以正常工作,但是一旦我进入400s,500s,这已被抛出,这不起作用我会假设因为afterAction永远不会发生。
我是否可以覆盖特定的函数来捕获控制器级别的异常并记录错误?
答案 0 :(得分:1)
解决方案是将以下方法添加到我的Controller:
use yii\web\Response;
use yii\web\ResponseEvent;
并处理beforeSend事件
public function init(){
parent::init();
//before we send the client the response, do work
Yii::$app->response->on(Response::EVENT_BEFORE_SEND,function($event){
$response = $event->sender;
//$response will have $response->statusCode etc so you can log the result here
});
}