famdirksen/laravel-request-logger

一个用于将请求记录到数据库的包

0.8 2024-08-28 15:05 UTC

This package is auto-updated.

Last update: 2024-08-28 15:05:20 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

使用此包,您可以记录到数据库的入站请求。

Package info

安装

您可以通过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)。请参阅 许可文件 了解更多信息。