Журнал действий (Логи)
Раздел Админ → Логи показывает журнал HTTP-запросов к API.
Что видно
| Поле | Описание |
|---|---|
| Время | Метка начала и завершения запроса |
| Метод | GET / POST / PUT / DELETE / PATCH |
| Путь | URL эндпоинта |
| Статус | HTTP-код ответа |
| Длительность | Сколько мс заняло (включая SQL) |
| Пользователь | Кто выполнил (из JWT) |
| SQL | Количество SQL-запросов и суммарное время |
| Топ-5 SQL | При подозрении на N+1 (≥20 запросов на один HTTP) — топ самых частых |
Использование
- Отладка: «у пользователя X не работает», смотрите его запросы — что ответил сервер.
- Производительность: эндпоинты с высоким количеством SQL-запросов = кандидаты на оптимизацию (
selectinload/joined). - Аудит безопасности: 403/401 ответы — попытки доступа без прав.
Фильтры
- По пользователю.
- По методу.
- По статусу (например, только 4xx / 5xx).
- По диапазону дат.
Хранение
Логи пишутся в файл в формате JSON Lines (logs/http_*.jsonl) и индексируются в БД для быстрого поиска. Старые логи можно архивировать вручную — автоочистки нет.
Связь с middleware
Запись логов делает LogRequestsMiddleware (middleware.py на бэке). Параллельно работает счётчик SQL (utils/sql_counter.py), который и даёт цифры по запросам.