dniccum / laravel-request-logs
在您的Laravel应用程序中记录和调试HTTP请求。
Requires
- php: ^8.0|^8.1|^8.2
- illuminate/contracts: ^9.0|^10.0
- laravel/framework: ^8.0|^9.0|^10.0
- spatie/laravel-package-tools: ^1.13.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^6.0
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
- spatie/laravel-ray: ^1.26
README
使用此特定于Laravel的包为您提供应用程序请求的见解。只需将轻量级中间件添加到应用程序中,即可捕获所有请求的主体、标头和响应。还提供了一个控制台命令,可以用来清除日志以防止任何过时或不希望的数据膨胀。
安装
您可以通过composer安装此包
composer require dniccum/laravel-request-logs
您可以使用以下命令发布和运行迁移
php artisan vendor:publish --tag="laravel-request-logs-migrations"
php artisan migrate --force
您可以使用以下命令发布配置文件
php artisan vendor:publish --tag="laravel-request-logs-config"
这是已发布配置文件的内容
return [ /* |-------------------------------------------------------------------------- | Table Name |-------------------------------------------------------------------------- | | The name of the table that will store the log entries. | */ 'table_name' => 'request_logs', /* |-------------------------------------------------------------------------- | History |-------------------------------------------------------------------------- | | The number of days of logs that you would like to keep in the database | at any time. | */ 'history' => env('LOGGING_HISTORY', 21), /* |-------------------------------------------------------------------------- | Remove Bearer Token |-------------------------------------------------------------------------- | | Enable if you would like to remove the bearer authentication token from | the request header. | */ 'remove_bearer' => env('LOGGING_REMOVE_BEARER', true), ];
用法
中间件
添加到中间件组
如果您想将此包的中间件应用于大量请求,例如所有您的api路由,您可以在app/Http/Kernel.php中将其应用于应用程序的api中间件组,如下所示
protected $middlewareGroups = [ 'web' => [ ... ], 'api' => [ ... \Dniccum\LaravelRequestLogs\Http\Middleware\RequestLogging::class, ], ];
添加到特定路由
另一方面,如果您想为特定路由添加一些日志清晰度,您可以在app/Http/Kernel.php中将它定义为路由中间件
/** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ ... 'route-logging' => \Dniccum\LaravelRequestLogs\Http\Middleware\RequestLogging::class ];
然后在您的路由文件中将其分配给特定路由
Route::post('/create-project', [ \App\Http\Controllers\SampleController::class, 'create' ]) ->middleware([ 'route-logging' ]);
重要:响应体长度限制
假设您的数据库迁移和模型没有更改,目前存在一些逻辑,可以防止response_body列过载。这意味着什么?如果记录请求的响应体非常大(例如,从API返回500+结果),字节/字符的数量可能太大,无法在数据库中存储而不会失败。如果响应体超过65,000个字符,将不会保存响应体。
日志清理(可选)
注意 – 这不是必需的,但强烈建议,因为这可能导致数据库中短时间内积累大量数据。
要自动删除旧日志,您可以使用提供的 artisan 命令 php artisan request-logs:clean,手动使用您的应用程序环境,或者您可以在app/Console/Kernel.php文件中利用您的应用程序计划程序过程来自动化它,如下所示
$schedule->job(\Dniccum\LaravelRequestLogs\Commands\CleanReqeustLogsCommand::class) ->daily();
存储历史记录
默认情况下,此包将保留21天的日志。这可以通过环境变量(LOGGING_HISTORY)或简单地在request-logs.php配置文件中修改它来更改。
测试
composer test
变更日志
有关最近更改的更多信息,请参阅CHANGELOG。
贡献
有关详细信息,请参阅CONTRIBUTING。
鸣谢
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。