webthatmatters / laravel-request-overseer
该软件包已被废弃,并且不再维护。没有建议的替代软件包。
一个用于记录请求/响应数据的laravel软件包。
1.3.3
2019-09-20 15:13 UTC
Requires
- ext-json: *
Requires (Dev)
- mockery/mockery: ^1.2
- orchestra/database: ^3.4
- orchestra/testbench: ^3.4
- phpunit/phpunit: ^5
Suggests
- jenssegers/mongodb: Needed for mongodb connections
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()来确定用户,因此请确保你已经正确配置了身份验证守卫。默认为truelog_request_body:是否记录请求正文。默认为truelog_response_body:是否记录响应正文。默认为truetable:用于日志的表名称,默认为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:一个组合过滤器,如果构造函数中提供的第一个或第二个过滤器适用,则应用。