有时候我们需要记录下请求和响应的全部参数
这样可以方便排查问题
现在通过中间件的形式增加一个AccessLog的记录功能
appHttpMiddleware目录下增加AccessLog.php 文件
<?php namespace AppHttpMiddleware; use Closure; class AccessLog { /** * 路由全局中间件 * * @param IlluminateHttpRequest $request * @param Closure $next * @return mixed */ public function handle($request, Closure $next) { $requestTime = microtime(true); $response = $next($request); $rq_time = microtime(true) - $requestTime; $log = [ 'method' => $request->method(), 'url' => $request->fullUrl(), 'param' => json_encode($request->all(), JSON_UNESCAPED_UNICODE), 'response' => $response->getContent(), 'req_header' => json_encode($request->header(), JSON_UNESCAPED_UNICODE), 'resp_header' => json_encode($response->headers->all(), JSON_UNESCAPED_UNICODE), 'ip_address' => $request->ip(), 'rq_time' => sprintf("%.2f", $rq_time), ]; logger()->channel('access')->info($log); return $response; } }
app/Http/Kernel.php 注册一下AppHttpMiddlewareAccessLog::class
class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ // AppHttpMiddlewareTrustHosts::class, AppHttpMiddlewareTrustProxies::class, FruitcakeCorsHandleCors::class, AppHttpMiddlewarePreventRequestsDuringMaintenance::class, IlluminateFoundationHttpMiddlewareValidatePostSize::class, AppHttpMiddlewareTrimStrings::class, IlluminateFoundationHttpMiddlewareConvertEmptyStringsToNull::class, AppHttpMiddlewareAccessLog::class ];
增加一下配置
config/logging.php
'access' => [ 'driver' => 'daily', 'path' => env('LOG_PATH_ACCESS', storage_path('logs/access/laravel.log')), 'level' => env('LOG_LEVEL', 'debug'), 'days' => 14, ],
请求一下就会看到生成文件