hryha/request-logger

Laravel/Lumen 包,用于记录请求和响应

v1.0.19 2024-01-23 14:35 UTC

README

Laravel request logger

记录请求和响应

此包添加了一个中间件,可以记录传入的请求和响应。您可以在 https://your.domain/request-logs 的查看面板中查看日志

Laravel 安装

您可以通过 composer 安装此包

composer require hryha/request-logger

您必须使用以下命令发布资产文件

php artisan vendor:publish --provider="Hryha\RequestLogger\RequestLoggerServiceProvider" 

您必须使用以下命令发布配置文件和资产

request-logger.php```php return [ 'locale' => env('REQUEST_LOGGER_LOCALE', 'en'), // 可用 'en', 'ua' 'middleware' => [ \Hryha\RequestLogger\Http\Middleware\BaseAuth::class, ], 'base_auth' => [ 'login' => env('REQUEST_LOGGER_LOGIN', 'login'), 'password' => env('REQUEST_LOGGER_PASSWORD', 'password'), ], 'timezone' => env('REQUEST_LOGGER_TIMEZONE', env('APP_TIMEZONE', config('app.timezone', 'UTC'))), 'date_format' => env('REQUEST_LOGGER_DATE_FORMAT', 'Y-m-d'), 'time_format' => env('REQUEST_LOGGER_TIME_FORMAT', 'H:i:s.u'), 'log_keep_days' => env('REQUEST_LOGGER_KEEP_DAYS', 14), 'table_name' => 'request_logs', 'enabled' => env('REQUEST_LOGGER_ENABLED', true), 'ignore_paths' => [ 'request-logs*', 'telescope*', 'nova-api*', ], 'hide_fields' => [ 'request' => [ 'headers' => [ 'authorization', 'php-auth-user', 'php-auth-pw', ], 'content' => [ 'password', 'token', 'access_token', ], ], 'response' => [ 'content' => [ 'password', 'token', 'access_token', ], ], ], 'replacer_hidden_fields' => '|^_-|', ]; ```

您必须使用以下命令执行迁移

    php artisan migrate --path=/vendor/hryha/request-logger/database/migrations/2021_11_05_000000_create_request_log_fingerprints_table.php
    php artisan migrate --path=/vendor/hryha/request-logger/database/migrations/2021_11_05_000000_create_request_logs_table.php

此包提供了一种中间件,可以作为全局中间件或单个路由添加。

// in `app/Http/Kernel.php`

protected $middleware = [
    // ...
    
    \Hryha\RequestLogger\Http\Middleware\RequestLogger::class
];
// in a routes file

Route::post('/test', function () {
    //
})->middleware(\Hryha\RequestLogger\Http\Middleware\RequestLogger::class);

支持的驱动程序

  • 存储日志
  • 数据库(mysql)

Lumen 安装

您可以通过 composer 安装此包

composer require hryha/request-logger --dev

您必须安装 vendor:publish 插件

您必须注册提供者

//in 'bootstrap/app.php'

$app->register(\Hryha\RequestLogger\RequestLoggerServiceProvider::class); 

您必须使用以下命令发布配置文件和资产

php artisan vendor:publish --provider="Hryha\RequestLogger\RequestLoggerServiceProvider" 

这是已发布配置文件的内容

request-logger.php```php return [ 'locale' => env('REQUEST_LOGGER_LOCALE', 'en'), // 可用 'en', 'ua' 'middleware' => [ \Hryha\RequestLogger\Http\Middleware\BaseAuth::class, ], 'base_auth' => [ 'login' => env('REQUEST_LOGGER_LOGIN', 'login'), 'password' => env('REQUEST_LOGGER_PASSWORD', 'password'), ], 'timezone' => env('REQUEST_LOGGER_TIMEZONE', env('APP_TIMEZONE', config('app.timezone', 'UTC'))), 'date_format' => env('REQUEST_LOGGER_DATE_FORMAT', 'Y-m-d'), 'time_format' => env('REQUEST_LOGGER_TIME_FORMAT', 'H:i:s.u'), 'log_keep_days' => env('REQUEST_LOGGER_KEEP_DAYS', 14), 'table_name' => 'request_logs', 'enabled' => env('REQUEST_LOGGER_ENABLED', true), 'ignore_paths' => [ 'request-logs*', 'telescope*', 'nova-api*', ], 'hide_fields' => [ 'request' => [ 'headers' => [ 'authorization', 'php-auth-user', 'php-auth-pw', ], 'content' => [ 'password', 'token', 'access_token', ], ], 'response' => [ 'content' => [ 'password', 'token', 'access_token', ], ], ], 'replacer_hidden_fields' => '|^_-|', ]; ```

您必须注册此配置文件

//in 'bootstrap/app.php'

$app->configure('request-logger');

您必须使用以下命令执行迁移

php artisan migrate

您必须使用以下命令创建存储符号链接

php artisan storage:link

您必须注册中间件

// in 'bootstrap/app.php'

$app->routeMiddleware([
    // ...
    
    'request-logger' => \Hryha\RequestLogger\Http\Middleware\RequestLogger::class,
]);

此包提供了一种中间件,可以作为全局中间件或单个路由添加。

// in a routes file

Route::post('/test', ['uses' => 'TestController@test', 'middleware' => ['request-logger']]);

数据清理

如果不进行清理,request_logs 表可能会迅速积累记录。为了减轻这种情况,您应该安排 request-logs:clear artisan 命令每天运行

$schedule->command('request-logs:clear')->daily();

运行 php artisan request-logs:clear 命令将删除记录日志中比在 log_keep_days 配置中指定的天数更早的记录。

要删除所有日志,请添加 --all 参数 php artisan request-logs:clear --all

配置自定义字段

请求记录器允许您添加用于记录的自定义字段。该包提供了 configureRequestLoggerCustomFields 函数,它必须返回包含自定义字段的数组。此外,请确保将这些自定义字段添加到数据库表 request_logs 中。

以下是如何使用 configureRequestLoggerCustomFields() 的示例

  • 添加中间件 ConfigureRequestLoggerMiddleware
  • 在中间件中,实现 handle 方法并使用 configureRequestLoggerCustomFields 函数指定自定义字段。
final class ConfigureRequestLoggerMiddleware
{
	public function handle(Request $request, Closure $next)
	{
		configureRequestLoggerCustomFields(function () use ($request) {
			return ['user_id' => $request->user()->id ?? null];
		});

		return $next($request);
	}
}
  • 在 Http Kernel 中注册中间件。

这些步骤概述了如何使用 configureRequestLoggerCustomFields 函数将自定义字段添加到您的日志设置中。

测试

php vendor/bin/phpunit