You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel日志中存储用户请求IP与User Agent并记录全量请求数据

全量请求日志实现方案

你当前使用的Exceptions/Handler.php仅能记录触发异常的请求数据,要覆盖所有正常、异常请求的全量数据记录,应该使用Laravel的全局中间件实现,操作步骤如下:

  • 执行Artisan命令生成自定义中间件
    php artisan make:middleware RequestLogMiddleware
  • 编辑生成的app/Http/Middleware/RequestLogMiddleware.php文件,写入日志记录逻辑,示例代码如下:
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Log;

class RequestLogMiddleware
{
    public function handle(Request $request, Closure $next)
    {
        // 先执行后续逻辑获取响应实例
        $response = $next($request);
        
        // 组装日志字段,可根据需求自行增减
        $logData = [
            'url' => $request->url(),
            'method' => $request->method(),
            'headers' => $request->headers->all(),
            'request_params' => $request->all(),
            'referer' => $request->server('HTTP_REFERER'),
            'response_status' => $response->getStatusCode()
        ];
        
        // 写入日志,格式和你现有异常日志保持一致
        $message = $logData['url'] . "\n" . json_encode($logData, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
        Log::info($message);

        return $response;
    }
}
  • 注册为全局中间件:编辑app/Http/Kernel.php文件,找到$middleware属性,将中间件类添加到数组末尾即可,这样所有进入应用的请求都会触发日志记录:
protected $middleware = [
    // 框架自带的其他全局中间件...
    \App\Http\Middleware\RequestLogMiddleware::class,
];

内容的提问来源于stack exchange,提问作者Amit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 21:36:02