HLEB2 FAQ: Как вывести в лог информацию о каждом пользовательском запросе? Вопрос

08 Июня (ред)

Возможно, вы уже пользовались такими отчетами, в которых каждый запрос к сайту подробно логируется с тем, чтобы в дальнейшем найти определенный запрос и проверить его состояние.

Во фреймворке HLEB2 такой возможности изначально не предусмотрено, так как такие логи должны быть сознательно одобрены на проекте и их формат и включаемые данные должны быть составлены разработчиком. Дело в том, что при достаточно большом количестве такой подробной информации должна быть определенная стратегия, куда их направлять и как сортировать.

Средствами фреймворка реализовать такое очень просто. Достаточно сделать middleware и добавить его к группе, которая оборачивает необходимые для логирования запросов маршруты. Подробнее о контроллерах-посредниках в документации фреймворка. Если необходимо перехватить все запросы, то надежнее воспользоваться событием KernelEvent фреймворка для добавления лога.

Класс middleware может быть таким:

<?php
// Файл app/Middlewares/HttpQueryLoggerMiddleware.php
declare(strict_types=1);

namespace App\Middlewares;

use Hleb\Base\Middleware;
use Hleb\Reference\Interface\Log;
use Hleb\Reference\Interface\Request;

class HttpQueryLoggerMiddleware extends Middleware
{
   public function index(Request $request, Log $logger): void
    {
        $data = [
            'url' => $request->getAddress() . $request->getUri()->getQuery(),
            'method' => $request->getMethod(),
            // Другие необходимые в логе параметры.
        ];
        $logger->info('Request log for the site', $data);
    }
}
fomiash fomiash + 215
Опубликовано в PHP фреймворк HLEB
К сожалению, ответов пока нет


Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.