👁 Когда ты разворачиваешь сервис в 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



