Mediumlogging

Что такое logging?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

logging — стандартная библиотека для логирования. Иерархия: Logger → Handler → Formatter → Filter. Уровни: DEBUG, INFO, WARNING, ERROR, CRITICAL.

import logging

logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(name)s: %(message)s'
)
logger = logging.getLogger(__name__)
logger.info('User %s logged in', username)   # %-formatting (lazy)

Handlers: StreamHandler (console), FileHandler, RotatingFileHandler (по size), TimedRotatingFileHandler (по времени).

Best practices:

  • модули используют getLogger(__name__) (иерархия по точкам);
  • never logging.basicConfig в библиотеке (только в приложении);
  • %-formatting через args (lazy), не f-string (всегда форматирование, даже если уровень ниже);
  • не использовать print для логов в production;
  • для приложений — dictConfig/fileConfig. Альтернативы: structlog, loguru.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.