foundation
Уровни логирования
Выбирайте debug, info, warn и error по операционной значимости, а не по привычке разработчика.
Уровни логирования отражают операционную срочность: debug для деталей разработки, info для штатных событий, warn для восстановимых аномалий, error для сбоев, требующих внимания. Уровень — про **actionability**, а не настроение разработчика.
| Уровень | Типичное применение | |---------|---------------------| | debug | Подробности; часто выключен в production | | info | Запрос обработан, job завершён, deploy готов | | warn | Retry, deprecation, медленные зависимости | | error | Провал запроса, необработанное исключение, риск потери данных |
if (attempt > 1) logger.warn({ attempt, provider: 'stripe' }, 'payment retry');
logger.error({ err, orderId }, 'payment failed after retries');
Настройте production defaults: baseline info или warn, debug временно на сервис при расследовании. Не логируйте каждую успешную итерацию цикла как error «чтобы дашборд увидел».
На интервью: уровни по окружениям, sampling vs полный debug и влияние уровней на шум алертов.
Типовые ошибки: всё на error; debug под нагрузкой; warn на ожидаемые бизнес-кейсы (404 при опечатке пользователя).
Компромисс — ясность сигнала против объёма логов и стоимости.
Чеклист:
- Уровни привязаны к ожиданиям реакции оператора.
- Lean defaults в production.
- Структурированный контекст на warn/error.
- Debug за флагами или dynamic config.