Вопрос: как настроить логирование в Python для продакшена? - Академия Selectel

Вопрос: как настроить логирование в Python для продакшена?

Линия поддержки
Линия поддержки Ответы на вопросы пользователей
26 января 2026

Показали, как настроить JSON-логирование в Python с ротацией файлов и интеграцией в ELK-стек для стабильной работы продакшена.

Изображение записи

Комментарий пользователя

Здравствуйте! Логи у нас разбрасываются по print и парсятся криво. Хочу нормальное JSON-логирование, ротацию и отправку в центр логирования. С чего начать?

Марина Кравченко Пользователь

Ответ специалиста

Добрый день, Марина! Начните с модуля logging, который уже есть в Python, плюс python-json-logger для JSON-формата.

Логи пишите в файл с ротацией, а Filebeat/Fluentd пусть собирает их в ELK.

  • Игнатий Царев

    Игнатий Царев

    Младший бэкенд-разработчик Python

Вот простой пример:


      import logging
from logging.handlers import TimedRotatingFileHandler
from pythonjsonlogger import jsonlogger

logger = logging.getLogger("app")
logger.handlers.clear()  # убираем дублирующие handlers
logger.setLevel(logging.INFO)

# Файл с ротацией
file_handler = TimedRotatingFileHandler("app.log", when="midnight", backupCount=7)
formatter = jsonlogger.JsonFormatter(
    '%(asctime)s %(levelname)s %(name)s %(module)s %(message)s %(extra)s'
)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)

# stdout для контейнеров
console_handler = logging.StreamHandler()
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)

logger.info("service started", extra={"env": "prod", "version": "1.2.3"})

В app.log и stdout получаются чистые JSON-строки, готовые для ELK. Filebeat их автоматически разберет.

Для контекста (request_id, user_id) добавляйте через extra={} или используйте фильтры. В продакшене настройки ротации и уровня логов выносите в конфиг. Обязательно протестируйте с локальным ELK — убедитесь, что парсинг проходит корректно.

Следите за новостями и практическими гайдами по инфраструктуре вместе с Академией Selectel.