基于Laravel封装一个强大的请求响应日志记录中间件
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Log;
class RequestResponseLoggingMiddleware
{
/**
* 处理传入的请求。
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle(Request $request, Closure $next)
{
// 执行下一个中间件
$response = $next($request);
// 记录请求结束时的日志
$this->logRequestResponse($request, $response);
return $response;
}
/**
* 记录请求和响应的详细信息。
*
* @param \Illuminate\Http\Request $request
* @param mixed $response
* @return void
*/
protected function logRequestResponse(Request $request, $response)
{
$method = $request->getMethod();
$uri = $request->getRequestUri();
$ip = $request->ip();
$status = $response->getStatusCode();
Log::info("请求信息", [
'method' => $method,
'uri' => $uri,
'ip' => $ip,
'status' => $status
]);
if ($status >= 500) {
Log::error("响应错误", [
'method' => $method,
'uri' => $uri,
'ip' => $ip,
'status' => $status
]);
}
}
}
这段代码定义了一个名为RequestResponseLoggingMiddleware
的中间件,它在HTTP请求和响应的生命周期中记录请求和响应的详细信息。它使用Laravel的日志功能Log
,根据请求的状态码记录不同级别的日志,例如如果状态码大于等于500,则记录为错误。这个中间件是一个很好的学习示例,展示了如何在Laravel框架中创建和使用中间件。
评论已关闭