Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: logging, log levels, debug, info, error, monitoring

Какие уровни логирования стоит использовать (info, debug, error)?

Вопрос проверяет понимание стандартных уровней логирования и их практического применения для эффективного отладки и мониторинга приложений.

Короткий ответ

Стандартные уровни логирования, такие как DEBUG, INFO, WARN, ERROR и FATAL, помогают структурировать сообщения по важности. DEBUG используется для детальной отладки во время разработки, INFO — для отслеживания нормальной работы приложения, а ERROR — для фиксации критических сбоев. На production обычно включают уровни INFO и выше, чтобы избежать шума. Правильный выбор уровней упрощает поиск проблем и анализ логов.

Длинный ответ

Уровни логирования — это систематизированный способ категоризации сообщений в логах приложения по их важности и назначению. Они позволяют фильтровать информацию: во время разработки можно видеть всё, а на работающей системе — только существенные события. Это ключ к эффективной отладке и мониторингу.

Основные уровни и их назначение

  • DEBUG: Самый детальный уровень. Используется для отладочной информации, полезной разработчикам (например, значения переменных, шаги алгоритма). Обычно отключается в production.
  • INFO: Информационные сообщения о нормальном ходе работы приложения (например, "Пользователь авторизован", "Запрос обработан"). Помогает отслеживать состояние системы.
  • WARN (или WARNING): Предупреждения о потенциально проблемных ситуациях, которые пока не привели к ошибке (например, "Кэш почти полон", "Медленный ответ от внешнего API"). Требует внимания.
  • ERROR: Регистрация ошибок, которые нарушили выполнение конкретной операции, но не привели к падению всего приложения (например, "Не удалось сохранить файл", "Ошибка валидации данных").
  • FATAL/CRITICAL: Критические ошибки, после которых приложение не может продолжать работу и должно быть остановлено (например, "Недоступна база данных", "Критическая нехватка памяти").

Практическое применение и пример

В коде вы выбираете уровень в зависимости от типа сообщения. Например, в Python с помощью стандартного модуля logging:

import logging

# Настройка логирования
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def process_order(order_id):
    logger.debug(f"Начало обработки заказа {order_id}")  # Только для отладки
    logger.info(f"Обработка заказа {order_id}")          # Стандартное информационное сообщение
    
    try:
        # ... бизнес-логика ...
        logger.info(f"Заказ {order_id} успешно обработан")
    except ValueError as e:
        logger.warning(f"Некорректные данные в заказе {order_id}: {e}")
    except Exception as e:
        logger.error(f"Не удалось обработать заказ {order_id}", exc_info=True)  # ERROR с информацией об исключении
        raise

В production-окружении уровень обычно устанавливается в INFO, чтобы не засорять логи отладочными сообщениями, но видеть важные события. При возникновении проблемы уровень можно временно понизить до DEBUG для сбора детальной информации.

Вывод: Используйте DEBUG для отладки, INFO для отслеживания нормальной работы, WARN для предупреждений, ERROR для ошибок операций и FATAL для критических сбоев. Грамотное разделение упрощает анализ логов, поиск инцидентов и снижает операционные издержки.

Уровень

  • Рейтинг:

    3

  • Сложность:

    3

Навыки

  • Python

    Python

  • Node.js

    Node.js

Ключевые слова

#logging

#log levels

#debug

#info

#error

#monitoring

Подпишись на Python Developer в телеграм