2017-07-30 40 views
1

当我打电话给我的服务器时,我想将URL和参数记录到日志或控制台。如何在Laravel中捕获所有请求URL

我能够通过将下面的代码放在我的Routes \ api.php中来捕获所有数据库请求。是否可以对HTTP请求执行相同的操作?

//Capture sql statements 
\Event::listen('Illuminate\Database\Events\QueryExecuted', function ($query) { 
    error_log($query->sql); 
}); 
+1

有一个事件Illuminate \ Routing \ Events \ RouteMatched,也许你可以使用那个?如果没有,我只需要一个中间件。 –

回答

2

你可以把它在中间件

创建新的中间件

应用程序\ HTTP \中间件\ LogRoutes.php

namespace App\Http\Middleware; 

use Closure; 

class LogRoutes 
{ 
    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
     dd($request->getRequestUri()); 
     return $next($request); 
    } 
} 

然后加入应用程序\内核。 php

protected $middlewareGroups = [ 
    'web' => [ 
     // first in this array! 
     App\Http\Middleware\LogRoutes::class, 
     ... 
    ] 
]