[Laravel系列] 框架中增加记录access log的日志中间件
有时候我们需要记录下请求和响应的全部参数
这样可以方便排查问题
现在通过中间件的形式增加一个AccessLog的记录功能
app\Http\Middleware目录下增加AccessLog.php 文件
<?php namespace App\Http\Middleware; use Closure; class AccessLog { /** * 路由全局中间件 * * @param \Illuminate\Http\Request $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 注册一下\App\Http\Middleware\AccessLog::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 = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\AccessLog::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, ],
请求一下就会看到生成文件
十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》
一款基于Golang+Vue开发的在线客服系统,软件著作权编号:2021SR1462600。一套可私有化部署的网站在线客服系统,编译后的二进制文件可直接使用无需搭开发环境,下载zip解压即可,仅依赖MySQL数据库,是一个开箱即用的全渠道在线客服系统,致力于帮助广大开发者/公司快速部署整合私有化客服功能。
开源地址:唯一客服(开源学习版)
官网地址:唯一客服官网