Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用Yii框架将所有HTTP请求记录到站点?_Php_Logging_Yii_Httprequest - Fatal编程技术网

Php 如何使用Yii框架将所有HTTP请求记录到站点?

Php 如何使用Yii框架将所有HTTP请求记录到站点?,php,logging,yii,httprequest,Php,Logging,Yii,Httprequest,我想将所有HTTP请求记录到站点,框架Yii 我可以使用框架的标准功能吗?我们已经使用onBeginRequest或onEndRequest完成了这项工作。请参见此处的更多信息: 本质上,您可以使用自己的类钩住全局请求事件,然后执行任何您想执行的操作。中的事件称为请求前和请求后() 例如: Yii::$app->on('afterRequest', function($event) { //do something... //response object is in $e

我想将所有HTTP请求记录到站点,框架Yii


我可以使用框架的标准功能吗?

我们已经使用
onBeginRequest
onEndRequest
完成了这项工作。请参见此处的更多信息:

本质上,您可以使用自己的类钩住全局请求事件,然后执行任何您想执行的操作。

中的事件称为请求前和请求后()

例如:

Yii::$app->on('afterRequest', function($event) {
    //do something...
    //response object is in $event->sender->response
    //response data is in $event->sender->response->data
    //request object is in $event->sender->request
});
但这是在响应数据准备到响应内容之前(根据响应格式,例如,
response::format_JSON
),因此如果您想要真正的最终响应主体,您需要这样做():


我知道这篇文章,但我找不到如何记录http请求,只有错误。我不想在framework code中编写自定义代码如果您只需要HTTP请求的日志,并且您正在运行Apache作为您的服务器,那么您可以使用已经存在的访问日志:。或者,在Yii中是否有这样做的特殊需要?是的,我知道Apache日志,但我认为Yii建议了类似的功能。您实际想要实现什么?为什么?当服务器已经为您记录请求时,您为什么希望应用程序记录请求?值得一提的是,Apache日志将包括所有不通过Yii的额外内容-CSS、JS、图像。。。
Yii::$app->response->on(\yii\web\Response::EVENT_AFTER_SEND, function($event) {  //alternatively use EVENT_AFTER_PREPARE
    //now you can access $event->sender->content and eg. $event->sender->getHeaders()
    //Also, you have access to the request through Yii::$app->request
});