我們正在使用zend框架2爲一個新的應用程序,我想有相同的日誌系統的Rails或類似的,我想每個請求有一個日誌,有可能做到這一點在Zend ?記錄每個請求在ZF2
0
A
回答
5
它取決於什麼你想記錄。如果它只是一個訪問日誌,你應該嘗試使用Web服務器的日誌。來自Apache/nginx/IIS等的日誌表現比您在ZF2應用中獲得的更好。
如果您需要登錄ZF2應用程序,您有兩種選擇。第一個選項是bootstrap
。這是您可以使用的最早的選項之一,所以可能是最好的選擇。不過,你也可以看看route
或dispatch
。這兩個事件在應用程序的「運行」階段被調用。通過這些事件,例如可以使用路徑匹配,因此如果您的請求與任何控制器匹配(或者如果您沒有匹配,則爲404),您就知道(或不知道)。
一些例子。假設您在logger
密鑰下的ServiceManager
中配置了一個記錄器。然後記錄在bootstrap
:
namespace Application;
class Module
{
public function onBootstrap($e)
{
$app = $e->getApplication();
$sm = $app->getServiceManager();
$logger = $sm->get('logger');
$logger->debug('Log here!');
}
}
或者例如,如果您等待route
,您可以將偵聽器route
事件:
namespace Application;
use Zend\Mvc\MvcEvent;
use Zend\Mvc\Router\RouteMatch;
class Module
{
public function onBootstrap($e)
{
$app = $e->getApplication();
$em = $app->getEventManager();
$sm = $app->getServiceManager();
$logger = $sm->get('logger');
$em->attach(MvcEvent::EVENT_ROUTE, function($e) use ($logger) {
$match = $e->getRouteMatch();
// No route, this is a 404
if (!$match instanceof RouteMatch) {
return;
}
$logger->debug(sprintf(
'Route event with route %s',
$match->getMatchedRouteName()
));
});
}
}
+0
像往常一樣,真棒,真棒。 ;-) –
2
相關問題
- 1. 如何在.NET Core WebAPI中自動記錄每個請求?
- 2. Puma請求記錄
- 3. ZF2 - 記錄不存在
- 4. 爲每個網頁的用戶記錄所有請求
- 5. Rails 2.3.x每個請求日誌記錄
- 6. 如何使用AFHTTPSessionManager記錄每個請求/響應?
- 7. 如何使用Alamofire記錄每個請求/響應?
- 8. firefox擴展記錄每個標籤的http請求url
- 9. 如何將每個請求記錄到csv文件
- 10. 如何登錄每個MediaWiki API請求?
- 11. 記錄/審計403個請求
- 12. Restangular GET請求返回100個記錄
- 13. 如何記錄Node.js請求
- 14. 記錄請求後回覆
- 15. 記錄Ehcache獲取請求
- 16. 請求互斥記錄
- 17. 如何記錄AFHTTPRequestOperationManager請求?
- 18. 記錄請求的時間
- 19. 請求跟蹤記錄器
- 20. 記錄expressJS JSON請求
- 21. ServiceStack MiniProfiler Ajax請求記錄
- 22. 快速記錄請求
- 23. 爲每個請求
- 24. 對每個請求
- 25. 爲每個請求
- 26. 每個記錄
- 27. 每個記錄
- 28. 從兩個時間表請求記錄時爲空記錄集
- 29. 新Ajax請求onComplete每個Ajax請求
- 30. 如何以及爲什麼index.php在ZF2中的每個請求上執行?
爲什麼不使用Apache的訪問日誌? – hohner