feat(observability): configurable logging, request ids and error logs
- internal/logging: LOG_LEVEL/LOG_FORMAT parsing and slog handler - request_id middleware (X-Request-ID or generated, echoed) + debug access log - httpx registers errors; middleware logs internal causes with request_id - health excluded, objects/sse debug-only, no query/body/secrets in logs - new observability capability spec; README/.env.example docs
This commit is contained in:
@@ -68,6 +68,17 @@ cp .env.example .env
|
||||
| `WORKER_INTERVAL` | `5s` | Период проверки воркером очереди задач |
|
||||
| `WORKER_BATCH` | `10` | Размер батча обрабатываемых задач |
|
||||
| `WORKER_PENDING_TTL` | `10m` | TTL задачи в статусе `pending` до повторной попытки |
|
||||
| **Логирование** | | |
|
||||
| `LOG_LEVEL` | `info` | Уровень логов: `debug`, `info`, `warn`, `error` |
|
||||
| `LOG_FORMAT` | `json` | Формат логов: `json` или `text` |
|
||||
|
||||
На уровне `debug` сервер пишет по строке на каждый HTTP-запрос (метод, маршрут,
|
||||
статус, длительность, пользователь, `request_id`) и логирует ожидаемые отказы 4xx.
|
||||
Внутренние ошибки (неожиданные и 5xx) логируются на уровне `error` с исходной причиной
|
||||
и `request_id`; сам `request_id` возвращается клиенту в заголовке ответа
|
||||
`X-Request-ID`. Маршрут `/api/health` в access-логи не попадает, а `/api/objects/*` и
|
||||
`/api/sse/*` — только на уровне `debug`. Query-строка, заголовок `Authorization` и тела
|
||||
запросов в логи не пишутся.
|
||||
|
||||
Слои данных выбираются параметрами (по умолчанию — локальный режим):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user