为你的Laravel应用增加请求以及响应日志

给应用增加请求日志和响应日志是一个很不错的习惯,为日后的问题排查非常有用,尤其是那些不好复现的问题
我们可以通过请求参数和响应数据来分析了。

添加两个中间件

app\Http\Middleware\RequestLog.php

<?php
/**
 * ----------------------------------------------------------
 * date: 2019/6/10 8:42
 * ----------------------------------------------------------
 * author: Raoxiaoya
 * ----------------------------------------------------------
 * describe: 记录请求日志
 * ----------------------------------------------------------
 */

namespace App\Http\Middleware;

use App\Traits\Controller\AjaxTraits;
use Closure;
use Illuminate\Support\Facades\Log;

class RequestLog
{
    use  AjaxTraits;

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     *
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        try {
            Log::debug('Request | '.$request->getPathInfo().' |', $request->input());
            $response = $next($request);
            return $response;
        } catch (HttpException $e) {
            return $this->ajaxResponse($e->getStatusCode(), $e->getMessage(), (object)[]);
        } catch (\Exception $e) {
            return $this->apiSysErrorResponse($e->getMessage(), (object)[]);
        }

    }
}

app\Http\Middleware\ResponseLog.php

<?php
/**
 * ----------------------------------------------------------
 * date: 2019/6/10 8:42
 * ----------------------------------------------------------
 * author: Raoxiaoya
 * ----------------------------------------------------------
 * describe: 记录响应日志
 * ----------------------------------------------------------
 */

namespace App\Http\Middleware;

use App\Traits\Controller\AjaxTraits;
use Closure;
use Illuminate\Support\Facades\Log;

class ResponseLog
{
    use AjaxTraits;

    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  \Closure $next
     *
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        try {
            $response = $next($request);
            Log::debug('Response | '.$request->getPathInfo().' | ' . $response->getContent());
            return $response;
        } catch (HttpException $e) {
            return $this->ajaxResponse($e->getStatusCode(), $e->getMessage(), (object)[]);
        } catch (\Exception $e) {
            return $this->apiSysErrorResponse($e->getMessage(), (object)[]);
        }

    }
}
发布了412 篇原创文章 · 获赞 25 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/raoxiaoya/article/details/103877111