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 подскажет развёрнутый ответ в реальном времени.