famdirksen / laravel-request-logger
一个用于将请求记录到数据库的包
Requires
- php: ^7.2|^7.3|^7.4|^8.0|^9.0
- ext-json: *
- illuminate/bus: ^6.14.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/database: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
- illuminate/http: ^6.0|^7.0|^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.17
- phpunit/phpunit: ^9.5
- psalm/plugin-laravel: ^1.4
- vimeo/psalm: ^4.3
README
使用此包,您可以记录到数据库的入站请求。
安装
您可以通过composer安装此包
composer require famdirksen/laravel-request-logger
使用
注意:根据您的应用程序接收到的请求数量,此包可能会对您的数据库大小/性能产生很大影响。
此包使用一个中间件来将请求记录到(目前唯一支持的驱动)数据库。
安装
将 UriLoggerMiddleware
中间件添加到您想要记录的路由(或分组)。
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middlewareGroups = [ 'web' => [ 'request_logger', // ... ], 'api' => [ 'request_logger', // ... ], ]; protected $routeMiddleware = [ 'request_logger' => \Famdirksen\LaravelRequestLogger\Http\Middleware\UriLoggerMiddleware::class, ]; }
使用以下命令发布迁移: php artisan vendor:publish --provider="Famdirksen\LaravelRequestLogger\LaravelRequestLoggerServiceProvider"
并迁移数据库以存储事件。 php artisan migrate
清理旧记录
您可以使用一个作业来清理旧请求日志。这个作业可以通过您的cronjob(通过 php artisan schedule:run
)来调度。
将此命令添加到您的 app/Console/Kernel.php
中,以每小时调度一个新的清除请求日志命令
$schedule->command(\Famdirksen\LaravelRequestLogger\Commands\ClearRequestLogsCommand::class)->hourly();
该作业将根据您的配置删除一定数量的请求日志。当删除的记录数等于您的限制时,它将调度作业以删除下一xxx行。这种方法用于防止数据库锁定。
事件处理
事件在将响应发送给用户后分发到队列。为了使此作业的性能最佳,请使用队列工作进程来处理作业。
禁用日志记录
当您想要禁用日志记录时,可以将您的 .env
文件中的 REQUEST_LOGGER_ENABLED
变量设置为 false
(提示:不要忘记清除您的配置缓存 php artisan config:clear
)。
指定队列
您可以将特定队列设置为在请求记录器上运行。这可以通过在您的 .env
中设置 REQUEST_LOGGER_QUEUE
变量来完成。如果没有提供值,它将使用默认队列。
所有新的请求都将调度到定义的队列,但其中一些可能已经调度到之前的定义队列。为了防止数据丢失,您需要保持旧队列运行,直到所有作业都被处理。
测试
composer test
变更日志
请参阅 CHANGELOG 了解最近更改的更多信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
致谢
许可
MIT许可(MIT)。请参阅 许可文件 了解更多信息。