hryha / request-logger
Laravel/Lumen 包,用于记录请求和响应
Requires
- php: ^7.3|^8.0
- 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 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