Уровни логирования

Тема дорожной карты · Observability

Уровни логов образуют иерархию серьёзности, позволяющую приложениям управлять детализацией вывода логов во время работы. Стандартные уровни логов — от наименее к наиболее серьёзным — это DEBUG, INFO, WARN, ERROR и FATAL (или CRITICAL). В продакшен-окружениях уровень логов обычно устанавливается на INFO или WARN для снижения шума и затрат на хранение, тогда как DEBUG включается временно при устранении неполадок для захвата подробных данных наблюдаемости. Последовательное использование уровней логов критически важно для наблюдаемости: логи с уровнем ERROR всегда должны сигнализировать о проблеме, требующей внимания, WARN — обозначать потенциально опасные ситуации, а INFO — документировать нормальные, но значимые события приложения. Многие фреймворки логирования позволяют динамически изменять уровень логов без перезапуска — например, через HTTP-эндпоинт или переменную окружения LOG_LEVEL, — что бесценно для диагностики продакшен-проблем по требованию.

Как это работает

Уровни логирования захватывает дискретные события с контекстом. Современное логирование = структурированный JSON ({"level":"error","trace_id":"...","msg":"DB connection failed","db":"users","attempt":3}). Шлите через vector / fluent-bit / promtail в log-store (Loki — label-indexed, Elasticsearch — full-text, ClickHouse — аналитика). Sample на источнике для high-volume потоков. Всегда включайте trace_id + service + version + level + timestamp.

Когда применять

Structured JSON логирование — с первого дня; console.log и printf — tech debt с момента > 1 сервиса. Loki — для cost-effective storage (порядки дешевле Elasticsearch на том же объёме), когда full-text search не критичен. Сокращайте объём логов — high-cardinality логи дороги везде. trace_id в каждый лог; ключ join к traces.

Типичные ошибки

Ловушки Уровни логирования: логирование на DEBUG в production (взрыв объёма + цена); логирование кредитных карт/токенов (PII-утечка в storage); нет ротации локальных логов (/var/log забивается + крэшит хост); нет структурированных полей = только grep-расследование; log retention навсегда (стоимость storage растёт).

Связанные понятия

Полезные ресурсы