Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Python Logging: от основ до production
DevOps / Мониторинг·12 тем·144 вопроса·уровень Middle

Python Logging: от основ до production

Полный курс по модулю logging в Python — от базового использования Logger и Handler до продвинутых паттернов: структурированное логирование, асинхронные handlers, интеграция с Sentry/ELK, контекстное логирование. Включает сравнение с альтернативами (structlog, loguru), cloud-native практики и troubleshooting реальных проблем. Для middle/senior разработчиков.

Начать курс

Python Logging: от основ до production

print() в работающем сервисе — это строка без времени, без уровня и без признака, к какому из сотни параллельных запросов она относится. Модуль logging даёт всё это из коробки, но берёт плату конфигурацией: четыре сущности (Logger, Handler, Formatter, Filter), иерархия имён по точкам и распространение записей вверх по дереву, из-за которого сообщение внезапно печатается дважды.

Курс из 12 тем для тех, кто уже пишет на Python и упирается в логи на работе. Первая треть — устройство модуля и конфигурация через dictConfig. Дальше то, что начинается в реальной эксплуатации: ротация файлов, JSON вместо человекочитаемых строк, correlation ID через ContextVars, вынос записи в отдельный поток QueueHandler/QueueListener, чтобы логирование не блокировало обработку запроса, и логирование из нескольких процессов, где обычный FileHandler молча портит файл.

Отдельная тема — сравнение с structlog, loguru и logbook: когда стандартный модуль проигрывает, как выглядит миграция и почему чаще всего мигрировать не нужно.

Границы

Курс про Python, а не про инфраструктуру логов. Sentry, Datadog, CloudWatch, Loki и ELK появляются со стороны отправителя: как настроить handler, что положить в поля, как не утопить квоту. Разворачивание и настройка самих этих систем — за рамками.

Что нужно знать заранее

Python на рабочем уровне: модули и пакеты, декораторы, контекстные менеджеры, базовое понимание потоков и процессов. Материал рассчитан на middle — junior-темы вроде «что такое исключение» здесь не объясняются.


Версия 2.0, март 2026.

  1. 1

    Введение в логирование

    Зачем нужно логирование, уровни логирования, базовая архитектура logging

    12 вопросов
  2. 2

    Базовое использование logging

    Logger, Handler, Formatter, Filter — основные компоненты

    12 вопросов
  3. 3

    Конфигурация логирования

    dictConfig, fileConfig, конфигурация через YAML/JSON

    12 вопросов
  4. 4

    Продвинутые Handlers

    RotatingFileHandler, TimedRotatingFileHandler, MemoryHandler, SMTPHandler

    12 вопросов
  5. 5

    Структурированное логирование

    JSON логирование, кастомные Formatter, интеграция с ELK Stack

    12 вопросов
  6. 6

    Контекстное логирование

    ContextVars, адаптеры, correlation ID, trace ID

    12 вопросов
  7. 7

    Асинхронное логирование

    QueueHandler, QueueListener, multiprocessing логирование

    12 вопросов
  8. 8

    Интеграция с внешними системами

    Sentry, Datadog, New Relic, CloudWatch, Loki

    12 вопросов
  9. 9

    Альтернативы logging

    structlog, loguru, logbook — сравнение, миграция, когда выбирать

    12 вопросов
  10. 10

    Cloud-native логирование

    Docker, Kubernetes, sidecar pattern, fluentd, centralized logging

    12 вопросов
  11. 11

    Production-паттерны

    Best practices, performance, security, troubleshooting

    12 вопросов
  12. 12

    Тестирование и отладка логов

    Тестирование логов, отладка конфигурации, common pitfalls

    12 вопросов
  13. Зачёт

    Доступен после всех тем (0 из 12)

  14. Экзамен

    Доступен после зачёта

31 / 31

Logging (Логирование)

Основные концепции

Процесс записи информации о работе приложения в логи для последующего анализа, отладки и мониторинга. Стандартный модуль Python для логирования.

Пример

import logging; logger = logging.getLogger(__name__); logger.info('Message')

Связанные термины

Logger

Компоненты logging

Основной объект для логирования в Python. Принимает сообщения от приложения, фильтрует по уровню и передаёт handlers для обработки.

Пример

logger = logging.getLogger(__name__) создаёт logger с именем текущего модуля.

Связанные термины

Handler

Компоненты logging

Компонент, который определяет, куда отправляются логи (файл, консоль, email, внешняя система). Может фильтровать по уровню.

Пример

FileHandler отправляет логи в файл, StreamHandler — в консоль, SMTPHandler — по email.

Связанные термины

Formatter

Форматирование

Определяет формат выходного сообщения лога: какие поля включать, как их форматировать. Устанавливается на handler.

Пример

Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') создаёт строку с timestamp, именем logger, уровнем и сообщением.

Связанные термины

Filter

Компоненты logging

Определяет, какие LogRecord должны быть обработаны. Может фильтровать по уровню, имени logger, кастомным условиям. Добавляется к logger или handler.

Пример

Filter(lambda record: 'sensitive' not in record.getMessage()) исключает логи с чувствительными данными.

Связанные термины

Log Level (Уровень логирования)

Основные концепции

Приоритет сообщения. Определяет, какие сообщения будут записаны. Стандартные уровни: DEBUG (10), INFO (20), WARNING (30), ERROR (40), CRITICAL (50).

Пример

logger.setLevel(logging.INFO) игнорирует DEBUG сообщения, записывает INFO и выше.

Связанные термины

LogRecord

Компоненты logging

Внутренний объект, представляющий одно сообщение лога со всей метаинформацией (время, уровень, имя logger, контекст, traceback).

Пример

LogRecord создаётся автоматически при вызове logger.info(), передаётся handlers и formatter'ам.

Связанные термины

Propagation (Распространение)

Продвинутые концепции

Механизм, при котором logger передаёт сообщения родительским logger'ам в иерархии. По умолчанию включён (propagate=True).

Пример

Logger 'app.api.users' propagates сообщения в 'app.api', затем в 'app', затем в root logger.

Связанные термины

Root Logger

Компоненты logging

Корневой logger в иерархии (имя 'root'). Все logger'ы по умолчанию propagates в него. logging.getLogger() без имени возвращает root.

Пример

logging.basicConfig() настраивает root logger. Все дочерние logger'ы наследуют его handlers.

Связанные термины

basicConfig

Основные концепции

Функция для быстрой настройки root logger. Используется для простых сценариев, не рекомендуется для production. Работает только один раз.

Пример

logging.basicConfig(level=logging.INFO, format='%(levelname)s: %(message)s')

Связанные термины

dictConfig

Продвинутые концепции

Функция для конфигурации logging через словарь. Рекомендуется для production, позволяет настроить все компоненты декларативно.

Пример

logging.config.dictConfig({'version': 1, 'handlers': {...}, 'loggers': {...}})

Связанные термины

RotatingFileHandler

Handlers

Handler, который ротирует файл лога при достижении определённого размера (maxBytes). Предотвращает бесконечный рост файлов.

Пример

RotatingFileHandler('app.log', maxBytes=10*1024*1024, backupCount=5) создаёт до 5 backup файлов по 10MB.

Связанные термины

TimedRotatingFileHandler

Handlers

Handler, который ротирует файл лога по расписанию (каждый день, неделю, месяц). Параметр when='midnight' ротирует каждый день в полночь.

Пример

TimedRotatingFileHandler('app.log', when='midnight', interval=1, backupCount=30) ротирует каждый день, хранит 30 дней.

Связанные термины

QueueHandler

Handlers

Асинхронный handler, который отправляет LogRecord в очередь для обработки в отдельном потоке. Не блокирует основной поток.

Пример

QueueHandler(queue) + QueueListener(queue, handler) обеспечивает неблокирующее логирование.

Связанные термины

QueueListener

Handlers

Поток, который читает LogRecord из очереди и передаёт их реальным handlers для обработки. Работает с QueueHandler.

Пример

QueueListener(queue, file_handler, console_handler).start() запускает асинхронную обработку логов.

Связанные термины

Structured Logging (Структурированное логирование)

Продвинутые концепции

Логирование в структурированном формате (обычно JSON) вместо текста. Упрощает поиск, фильтрацию и анализ в системах типа ELK Stack.

Пример

{'timestamp': '2026-03-21T10:00:00', 'level': 'ERROR', 'message': 'DB failed', 'host': 'db1'}

Связанные термины

JSON Formatter

Форматирование

Кастомный Formatter, который выводит LogRecord в формате JSON вместо текста. Используется для structured logging.

Пример

python-json-logger.JsonFormatter() создаёт JSON строки из LogRecord.

Связанные термины

Correlation ID

Продвинутые концепции

Уникальный идентификатор запроса, который передаётся через все сервисы. Позволяет отследить весь путь запроса в логах distributed системы.

Пример

X-Correlation-ID: abc-123-xyz добавляется в каждый лог запроса для трассировки.

Связанные термины

ContextVars

Продвинутые концепции

Механизм Python (contextvars) для хранения контекстно-зависимых данных (correlation ID, user_id) в асинхронном коде. Каждый async контекст имеет свои значения.

Пример

contextvar = ContextVar('correlation_id'); contextvar.set('abc-123')

Связанные термины

Sentry Integration

Интеграции

Интеграция logging с Sentry для автоматической отправки ошибок и исключений в систему мониторинга ошибок.

Пример

sentry_sdk.init(dsn='...') + LoggingIntegration() отправляет ERROR+ логи в Sentry.

Связанные термины

ELK Stack

Интеграции

Набор инструментов для centralized logging: Elasticsearch (хранение и поиск), Logstash (обработка), Kibana (визуализация).

Пример

Python приложение → JSON логи → Fluentd → Elasticsearch → Kibana dashboard.

Связанные термины

CloudWatch Handler

Интеграции

Handler для отправки логов в AWS CloudWatch Logs. Библиотека watchtower.

Пример

watchtower.CloudWatchLogHandler(log_group='/aws/ecs/myapp') отправляет логи в CloudWatch.

Связанные термины

structlog

Альтернативы logging

Библиотека для structured logging в Python. Предоставляет иммутабельные logger'ы, контекст через bind(), processors для трансформации логов.

Пример

log = structlog.get_logger(); log.info('user_logged_in', user_id=123)

Связанные термины

loguru

Альтернативы logging

Библиотека для логирования с очень простым API. from loguru import logger; logger.info('msg') — ноль конфигурации.

Пример

logger.bind(user_id=123).info('Request processed') — контекст через bind().

Связанные термины

Fluentd / Fluent Bit

Cloud-native

Log collector — собирает логи из файлов/stdout, парсит, трансформирует, отправляет в Elasticsearch, CloudWatch, Kafka, etc. Fluent Bit — lightweight версия.

Пример

Fluent Bit DaemonSet в Kubernetes собирает логи из /var/log/containers/*.log и отправляет в Elasticsearch.

Связанные термины

DaemonSet (Kubernetes)

Cloud-native

Kubernetes resource, который запускает pod на каждой node. Используется для log collectors (Fluent Bit), которые собирают логи со всех pods на node.

Пример

Fluent Bit DaemonSet читает /var/log/containers/*.log на каждой node.

Связанные термины

Sidecar Pattern

Cloud-native

Паттерн Kubernetes: отдельный контейнер в том же pod, который читает логи основного контейнера (из shared volume) и отправляет в centralized logging.

Пример

App container пишет в /app/logs/app.log, Fluent Bit sidecar читает и отправляет в Elasticsearch.

Связанные термины

Downward API (Kubernetes)

Cloud-native

Механизм Kubernetes для передачи metadata (pod name, namespace, node name) в контейнер через environment variables или files.

Пример

POD_NAME environment variable из fieldRef: fieldPath: metadata.name для добавления в логи.

Связанные термины

Graceful Shutdown

Продвинутые концепции

Корректное завершение приложения с обработкой SIGTERM: flush log buffers, остановка QueueListener, закрытие handlers.

Пример

signal.signal(signal.SIGTERM, handler) для flush логов перед termination.

Связанные термины

Grafana Loki

Интеграции

Log aggregation system от Grafana Labs. Индексирует только labels (метаданные), не содержимое логов — дешевле Elasticsearch.

Пример

Promtail → Loki → Grafana для визуализации логов.

Связанные термины

Trace ID

Продвинутые концепции

Уникальный идентификатор trace в distributed tracing (OpenTelemetry, Jaeger). Связывает все операции одного запроса через все сервисы.

Пример

trace_id: abc123def456 передаётся через заголовки X-Trace-ID между сервисами.

Связанные термины

Частые вопросы о курсе «Python Logging: от основ до production»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Python Logging: от основ до production»?

Курс включает 12 тем и 144 вопроса с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Python Logging: от основ до production»?

Маршрут охватывает уровни Middle. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Python Logging: от основ до production» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Python Logging: от основ до production» бесплатный?

Да, курс полностью бесплатный: все 12 тем доступны без оплаты.