Php 如何使用Yii框架将所有HTTP请求记录到站点?
我想将所有HTTP请求记录到站点,框架YiiPhp 如何使用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
我可以使用框架的标准功能吗?我们已经使用
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
});