Laravelは、ミドルウェアと呼ばれた terminate
私たちは、このメソッドを実装する場合、アプローチを、実行は終了しようとしている、Laravel Laravelは次のような方法が構成され、ライフサイクル全体を通して、この方法を実行します:
public function terminate($request, $response)
{
}
これは、1つは、2つのパラメータがあり $request
、他の1 $response
。すなわち、このリクエストパラメータと応答値。私たちは、APIリクエストのパラメータと応答値の処理時間にこの方法を使用することができます。
ミドルウェアの定義
<?php
namespace App\Http\Middleware;
use App\Jobs\DeleteRedisToken;
use App\Models\ModifyUsersPassword;
use App\Models\User;
use Auth;
use Closure;
use Illuminate\Support\Facades\Redis;
use Illuminate\Support\Facades\Log;
use \App\Models\Api\LoginToken;
/**
*
* - author llc
*
*/
class AppRequestLog
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
return $next($request);
}
public function terminate($request, $response)
{
$startTime = LARAVEL_START * 10000;
$endTime = microtime(true) * 10000;
//将所有请求写日志
$url = $request->getRequestUri();
$header = $request->header();
$allRequest = $request->all();
$allInfo = [
'input' => json_encode($request->input()),
'response' => $response->getContent(),
'url' => $url,
'header' => $header,
'allRequest' => $allRequest,
'microtime' => microtime(),
'start_time' => $startTime,
'end_time' => $endTime,
'handle_time' => $endTime - $startTime,
];
Log::useDailyFiles(storage_path('logs/appRequest/appRequestLog.log'), 180, 'debug');
Log::info('appRequestLog',$allInfo);
}
}
Kernel.phpは、APIであなたも他の場所に適用することができ、現在を導入し、
修正$ middlewareGroups内部
'api' => [
\App\Http\Middleware\AppRequestLog::class, //引入中间件
// \App\Http\Middleware\AppAllSingleLogin::class,
'throttle:1000,1',
'bindings',
],
このような要求は、ここですべてのAPIを経由します
ストレージに独自のビューファイルを完了した後に、すべての情報が記録されています
logs/appRequest/appRequestLog.log