将laravel 请求参数 herder 路径 相应参数一网打尽

参考自:https://58hualong.cn/blog/post/laravel-shiyong-terminate-jilu-api-de-xiangying-shijian-qingqiu-canshu-he-xiangyingzhi

Laravel 的中间件有一个叫做 terminate 的方法,如果我们实现了该方法,那么在 Laravel 整个生命周期执行快要结束的时候,Laravel 就会执行这个方法,方法结构如下:

public function terminate($request, $response)
    {
    }

它有两个参数,一个是 $request ,另外一个是 $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的所有请求都会经过这里

完成后自己查看storage下的文件,所有信息都有记录了

logs/appRequest/appRequestLog.log
发布了263 篇原创文章 · 获赞 46 · 访问量 37万+

猜你喜欢

转载自blog.csdn.net/qq_27229113/article/details/103476847
今日推荐