Yii2记录接口的请求日志,请求参数以及返回的数据

利用的是Yii2的事件(events),当接口请求到达,系统处理,返回数据,都会触发Yii2内置的一些事件(下文用到的事件是yii\base\Application::EVENT_AFTER_REQUEST),我们要做的就是给这个被触发的事件添加一段处理程序

  1. main.php添加配置
    'bootstrap' => ['common\components\events\AfterRequest(这个是自定义类)']

  2. 实现事件类

namespace common\components\events;

use common\components\Tool;
use Yii;
use yii\base\Event;

/**
 1. 记录接口的请求日志
 2. Class AfterRequest
 3. @package common\components\events
 */
class AfterRequest extends Event {
    public function init(){
        Yii::$app->on(yii\base\Application::EVENT_AFTER_REQUEST, function($event){
            $moduleId =  Yii::$app->controller->module->id;
            if(in_array($moduleId,array('app-api'))){
                $requestParams = Tool::getParam();
                $requestIp = Yii::$app->request->getUserIP();
                $requestTime = time();
                $route = Yii::$app->controller->getRoute();
                $requestUrl =  Yii::$app->request->getHostInfo() . Yii::$app->request->getUrl();

                $data = ob_get_contents();
                Tool::writeLog(date('Y-m-d H:i:s',$requestTime)  . ' [' . $requestIp . '] [' . $route . '] '. $requestUrl);
                Tool::writeLog('Params:' . json_encode($requestParams));
                Tool::writeLog('Return:' . $data);
                Tool::writeLog('````````````````````````````````````````````````````````````````````````````');
            }
        });
    }
}

这样以后查看接口日志的时候,可以方便的看到接口请求的参数,以及返回的数据,方便调试错误等等,至于系统内置有哪些事件,百度谷歌肯定会有的。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值