JSON-логирование в Python для продакшн-окружения

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

json-логированиеpythonpython-json-logger

👁 Когда ты разворачиваешь сервис в Docker или Kubernetes, стандартные текстовые логи быстро теряют ценность. Их сложно анализировать, фильтровать и использовать для алертов. Намного эффективнее логировать в структурированном JSON-формате, чтобы лог-агрегаторы (Loki, ELK, Datadog, Promtail и др.) могли удобно парсить события.

📝 Вот пример настройки JSON-логгера с помощью библиотеки python-json-logger:

import logging
from pythonjsonlogger import jsonlogger

logger = logging.getLogger()
logHandler = logging.StreamHandler()

formatter = jsonlogger.JsonFormatter('%(asctime)s %(levelname)s %(name)s %(message)s')
logHandler.setFormatter(formatter)

logger.addHandler(logHandler)
logger.setLevel(logging.INFO)

logger.info("User login", extra={"user_id": 123, "ip": "10.0.0.5"})

📌 Как использовать этот подход:

  • — Установи пакет: pip install python-json-logger
  • — Импортируй и настрой StreamHandler, который будет писать в stdout (важно для Docker)
  • — Укажи форматтер JsonFormatter и передай нужные поля (можно добавить любые свои)
  • — Вместо print() используй logger.info()/error()/warning() и прокидывай доп. данные через extra={}
  • — В результате ты получаешь структурированный лог, например:
{"asctime": "2025-06-04 20:15:03,123", "levelname": "INFO", "name": "root", "message": "User login", "user_id": 123, "ip": "10.0.0.5"}

🔎 Зачем это нужно:

  • • Логи сразу готовы для сбора в Grafana Loki, ELK или любой другой системе
  • • Упрощается фильтрация: можно искать по user_id, ip или service_name
  • • Удобно настраивать алерты: например, если за минуту >100 ошибок с одним user_id
  • • Масштабируемо: в микросервисной архитектуре логирование в JSON — обязательный стандарт

❗️ Такой подход превращает обычные логи в мощный инструмент диагностики и мониторинга. А главное — легко внедряется и не требует тяжелых зависимостей.

tags: #логирование #python #мониторинг

❤️ @recura_tech

Скриншот: пример конфигурации JSON-логгера в Python (код на тёмном фоне) с логотипом RECURA — демонстрация настройки для продакшна и Docker
Пример конфигурации json-логгера в Python на тёмном фоне с логотипом RECURA

Читайте так же