2013-01-04 54 views
2

我想記錄所有的HTTP請求到站點,框架Yii。如何使用Yii Framework將所有HTTP請求記錄到站點?

我可以使用框架的標準功能嗎?

+0

我知道這篇文章,但我無法找到如何記錄http請求,只有錯誤。我不想在框架代碼中編寫自定義代碼 – Ozerich

+5

如果您只需要一個HTTP請求日誌,並且您正在運行Apache作爲您的服務器,則可以使用已存在的訪問日誌:http://httpd.apache.org /docs/1.3/logs.html#accesslog。或者,Yii內部是否有特定的需求? –

+0

是的,我知道Apache日誌,但我認爲Yii建議類似的功能 – Ozerich

回答

2

我們已經使用onBeginRequestonEndRequest。在這裏看到更多的信息:How to use events in Yii

實質上,你將全局請求事件與你自己的類掛鉤,然後做任何你想做的事情。

1

Yii2的事件稱爲beforeRequestafterRequesthttp://www.yiiframework.com/doc-2.0/guide-structure-applications.html

例如:(根據

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://www.yiiframework.com/doc-2.0/guide-runtime-responses.html#sending-response):

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 
}); 
相關問題