如何在 Codeigniter 4 中记录每个 GET 和 POST 数据?

How to log every GET And POST data in Codeigniter 4?

我的 Web 应用程序正在对我们的 CodeIgniter 4 后端进行大量 AJAX 调用(GET 和 POST)。我目前调试 AJAX 调用的方法是在每个方法中设置手动记录消息。太费时间了。

你知道是否有更好的方法吗?覆盖 CI class?

我很高兴得到每一个帮助。

为了记录请求,您必须创建“后过滤器”。

首先定义实现 FilterInterface 的 Class。

    class Logger implements FilterInterface
    {
        use ResponseTrait;
    
    public function before(RequestInterface $request)
        {
         ...   
        }
    
    public function after(RequestInterface $request, ResponseInterface $response)
        {
           ...
        }
    
    }

在 after 方法中,您需要存储响应,然后使用 log_message 进行保存。

public function after(RequestInterface $request, ResponseInterface $response)
    {
        $response_service = \Config\Services::response();
         log_message('info', '{message}', ['message' => $response_service->getJSON()]

    }

在这里,我存储了显式使用的响应服务,然后简单地调用了 getJSON 来存储请求的 JSON 主体。您需要针对您的问题修改它。另外,请注意您不需要显式调用响应服务。还有另一个线程显示了如何隐式保存响应,因此您可能需要参考它。

过滤完成后,您需要为路由注册别名,如下所示:

public $aliases = ['logger'         =>  \App\Filters\Logger::class];

完成后,您可以在单个路由或全局路由上实施。 以下是如何在全局路由上实现它:

public $globals = [
    'before' => [
        ...
    ],
    'after'  => [
        'logger',
    ],
];

参考资料:https://codeigniter4.github.io/userguide/incoming/filters.html?highlight=filter

https://codeigniter4.github.io/userguide/incoming/request.html?highlight=request

https://codeigniter4.github.io/userguide/general/logging.html?highlight=log_message

只需使用 echo $this->request->getPost("usersemail");死(); 对于用户电子邮件输入字段