dniccum/laravel-request-logs

在您的Laravel应用程序中记录和调试HTTP请求。

1.0.3 2023-02-21 20:14 UTC

This package is auto-updated.

Last update: 2024-09-08 14:24:44 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

使用此特定于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)。有关更多信息,请参阅许可文件