Какие основные уровни логирования (log levels) используются в разработке?

«Какие основные уровни логирования (log levels) используются в разработке?» — вопрос из категории Логирование и мониторинг, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Уровни логирования — это система приоритетов для сообщений в логах. Стандартные уровни (от наиболее детального к критическому):

  1. TRACE — максимальная детализация для отладки (вход/выход из функций, значения внутренних переменных).
  2. DEBUG — информация для разработчиков о ходе выполнения (промежуточные состояния, некритические данные).
  3. INFO — регистрация нормальных событий работы приложения (сервис запущен, пользователь подключился).
  4. WARN — предупреждения о потенциальных проблемах, которые не нарушили работу (некорректный, но обработанный формат данных, медленный запрос).
  5. ERROR — ошибки, которые нарушили выполнение конкретной операции (исключение, сбой запроса к БД), но приложение продолжает работать.
  6. FATAL/CRITICAL — критические ошибки, приводящие к остановке приложения или его ключевой части.

Почему это важно? Уровни позволяют фильтровать логи. На production обычно включают INFO и выше, а на staging — DEBUG.

Пример на Python с модулем logging:

import logging

# Настройка уровня логирования для корневого логгера
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

logger.debug('Это сообщение видно только при level=DEBUG')  # Для отладки
logger.info('Пользовательский сервис инициализирован')     # Информационное событие
logger.warning('Кэш почти заполнен')                       # Предупреждение
logger.error('Не удалось подключиться к базе данных')      # Ошибка операции