request-log / log-request-package
存储HTTP请求信息到日志的包,在请求进入路由之前
dev-main
2024-09-25 15:02 UTC
Requires
- php: ^7.4|^8.0
- illuminate/support: ^7.0|^8.0|^9.0|^10.0
This package is auto-updated.
Last update: 2024-09-25 15:02:45 UTC
README
此包用于记录所有接收到的HTTP请求,包括URL、方法、发送的数据和请求头。它非常适合用于调试和监控流量。
索引
安装
要安装此包,只需使用Composer
composer require request-log/log-request-package
由于Laravel Package Auto-Discovery,包将被自动注册。
配置
如果您想自定义包的配置,例如是否记录请求头,可以发布配置文件
php artisan vendor:publish --tag=logrequest-config
这会创建一个配置文件config/logrequest.php,您可以在其中调整选项。
使用
特定路由的中间件
要使用特定路由的中间件,只需将其直接应用于您的路由文件(routes/web.php或routes/api.php)
Route::middleware('log.request')->group(function () { Route::get('/minha-rota', [MinhaController::class, 'meuMetodo']); // Outras rotas... });
全局中间件
如果您想将中间件应用于所有路由(全局方式),可以在app/Http/Kernel.php中的web或api中间件组中注册该中间件
protected $middlewareGroups = [ 'web' => [ // Outros middlewares... \RequestLog\LogRequestPackage\Middleware\LogRequestMiddleware::class, ], ];
或者,您可以通过包的ServiceProvider全局应用中间件,在LogRequestServiceProvider.php文件中取消注释相应的行
$router->pushMiddlewareToGroup('web', LogRequestMiddleware::class);
日志示例
默认的请求日志将记录到Laravel的默认日志文件(storage/logs/laravel.log)。以下是一个日志输出示例
[2024-09-11 12:34:56] local.INFO: Requisição recebida {
"url": "http://meusite.com/minha-rota",
"metodo": "POST",
"dados": {
"nome": "João",
"email": "joao@example.com"
},
"cabecalhos": {
"host": ["meusite.com"],
"content-type": ["application/json"],
"user-agent": ["Mozilla/5.0 ..."],
"accept": ["*/*"],
// Outros cabeçalhos...
}
}
测试
要测试此包,您可以创建一个测试Laravel项目并使用中间件在您的路由中。如果您想自动化测试,可以使用PHPUnit或任何与Laravel兼容的测试框架在您的路由中添加中间件测试。
基本测试示例
public function test_log_request_middleware() { $response = $this->get('/minha-rota'); // Verificar se a resposta está correta $response->assertStatus(200); // Verificar se os logs foram gravados corretamente // Isso pode ser feito lendo o arquivo de logs e procurando as entradas de log }
许可证
此包是开源的,并使用MIT许可证。有关详细信息,请参阅LICENSE文件。