webthatmatters/laravel-request-overseer

该软件包已被废弃,并且不再维护。没有建议的替代软件包。

一个用于记录请求/响应数据的laravel软件包。

1.3.3 2019-09-20 15:13 UTC

This package is auto-updated.

Last update: 2022-11-11 15:36:07 UTC


README

一个易于配置的请求记录软件包。

功能

  • 记录所有请求数据,包括头部信息和(可选)当前用户
  • 记录响应状态、头部信息和(可选)正文
  • 可配置的连接,支持MongoDB和任何Eloquent支持的数据库

安装

  • 使用composer require webthatmatters/laravel-request-overseer安装软件包
  • WebThatMatters\Overseer\Providers\OverseerServiceProvider添加到你的config/app.php的providers中
  • 运行php artisan vendor:publish --provider="WebThatMatters\Overseer\Providers\OverseerServiceProvider" --tag=config,如果你希望修改配置
  • 运行php artisan vendor:publish --provider="WebThatMatters\Overseer\Providers\OverseerServiceProvider" --tag=migrations,以发布软件包迁移
  • 如果你使用的是除了mongodb以外的连接,运行php artisan migrate以创建日志表
  • WebThatMatters\Overseer\Middleware\LogMiddleware添加到你的App\Http\Kernel中的routeMiddleware,使用任何你想要的名称
  • 在你的路由中使用已注册的中间件
  • 成功!

配置

以下键包含在overseer.php中,并在发布配置后可以更改。

  • connection:要使用的laravel连接名称,默认为env('DB_CONNECTION', 'mysql')。请确保正确配置
  • request_headers:要记录的请求头部,作为字符串数组。默认设置为'*',表示所有头部。
  • response_headers:要记录的响应头部,作为字符串数组。默认设置为'*',表示所有头部。
  • log_user:是否记录当前请求的用户。这将使用Auth::id()来确定用户,因此请确保你已经正确配置了身份验证守卫。默认为true
  • log_request_body:是否记录请求正文。默认为true
  • log_response_body:是否记录响应正文。默认为true
  • table:用于日志的表名称,默认为request_logs。当使用MongoDB时,这是要使用的集合名称。

注意:在记录请求/响应正文时,请确保你的数据库的text类型可以处理你预期的数据最大大小。

扩展

  • 为了提供不同的持久层,你可以将你的实现绑定到WebThatMatters\Overseer\Repositories\LogEntryRepository容器中,而不是默认的实现,并按你的需求持久化日志条目。
  • 如果你希望以不同的方式处理请求生命周期条目日志,你可以将你的实现绑定到WebThatMatters\Overseer\Processing\LogEntryProcessor容器中。但是,这将需要你实现配置行为,如果你希望保留它。

过滤器

此软件包提供自定义请求过滤功能,因此你可以只记录满足某些条件的请求。为了使用过滤功能,您需要将您的过滤器注册到FilterRegistry中。默认情况下,一个空的注册表被绑定到容器中。如果您希望注册过滤器,您可以在您的提供者之一中将新的注册表实例绑定到容器中。

<?php
    use WebThatMatters\Overseer\Filters\FilterRegistry;
    use WebThatMatters\Overseer\Filters\MethodTypeFilter;
    
    $registry = new FilterRegistry();
    $registry->register('modify',new MethodTypeFilter(['PUT','POST','DELETE']));
    $this->app->instance(FilterRegistry::class,$registry);

然后,您可以通过使用提供的中间件的注册名称作为参数,在路由或路由组中使用任何已注册的过滤器。

<?php
use Illuminate\Support\Facades\Route;
Route::group(['middleware' => 'log:modify'],function(){
    // Your routes here
});

该软件包包含一些可直接使用的过滤器,但您也可以通过实现 Filter 接口来自定义过滤器。提供的过滤器包括:

  • MethodTypeFilter:一种基于请求方法类型进行过滤的过滤器。允许的方法类型作为字符串数组传递给构造函数。
  • AndFilter:一个组合过滤器,如果构造函数中提供的第一个和第二个过滤器都适用,则应用。
  • OrFilter:一个组合过滤器,如果构造函数中提供的第一个或第二个过滤器适用,则应用。