dmeys / request-logger
Laravel/Lumen 包,用于记录请求和响应
Requires
- php: ^7.3|^8.0|8.2
- ext-json: *
- illuminate/support: >5.7
Requires (Dev)
- ext-pdo: *
- nunomaduro/collision: ^5.10
- orchestra/testbench: 6.x-dev
README
记录请求和响应
此包添加了一个中间件,可以记录传入的请求和响应。您可以在 https://your.domain/request-logs
的视图面板中查看日志
Laravel 安装
您可以通过 composer 安装此包
composer require dmeys/request-logger
您必须使用以下命令发布资产文件
php artisan vendor:publish --provider="Dmeys\RequestLogger\RequestLoggerServiceProvider"
您必须使用以下命令发布配置文件和资产文件
request-logger.php
return [ 'locale' => env('REQUEST_LOGGER_LOCALE', 'en'), // available 'en', 'ua' 'middleware' => [ \Dmeys\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/dmeys/request-logger/database/migrations/2021_11_05_000000_create_request_log_fingerprints_table.php php artisan migrate --path=/vendor/dmeys/request-logger/database/migrations/2021_11_05_000000_create_request_logs_table.php
此包提供了一个中间件,可以作为全局中间件或单个路由添加。
// in `app/Http/Kernel.php` protected $middleware = [ // ... \Dmeys\RequestLogger\Http\Middleware\RequestLogger::class ];
// in a routes file Route::post('/test', function () { // })->middleware(\Dmeys\RequestLogger\Http\Middleware\RequestLogger::class);
支持的驱动器
- 存储日志
- 数据库(mysql)
Lumen 安装
您可以通过 composer 安装此包
composer require dmeys/request-logger --dev
您必须安装 vendor:publish 插件
您必须注册提供者
//in 'bootstrap/app.php' $app->register(\Dmeys\RequestLogger\RequestLoggerServiceProvider::class);
您必须使用以下命令发布配置文件和资产文件
php artisan vendor:publish --provider="Dmeys\RequestLogger\RequestLoggerServiceProvider"
这是已发布配置文件的内容
request-logger.php
return [ 'locale' => env('REQUEST_LOGGER_LOCALE', 'en'), // available 'en', 'ua' 'middleware' => [ \Dmeys\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' => \Dmeys\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