request-log/log-request-package

存储HTTP请求信息到日志的包,在请求进入路由之前

dev-main 2024-09-25 15:02 UTC

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.phproutes/api.php

Route::middleware('log.request')->group(function () {
    Route::get('/minha-rota', [MinhaController::class, 'meuMetodo']);
    // Outras rotas...
});

全局中间件

如果您想将中间件应用于所有路由(全局方式),可以在app/Http/Kernel.php中的webapi中间件组中注册该中间件

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文件。