d343a317ee
- Ежедневная ротация в 00:00 с архивацией в tar.gz - Разделение по уровням: info.log, warning.log, error.log - Отдельный payments.log для платежных операций - Отправка архивов в Telegram-канал бекапов - Автоочистка архивов старше 7 дней (настраивается) - Переключатель LOG_ROTATION_ENABLED (по умолчанию выключен)
55 lines
1.9 KiB
Python
55 lines
1.9 KiB
Python
"""Специальный логгер для платежей.
|
|
|
|
Выделенный логгер для всех платежных операций.
|
|
Записи идут в отдельный файл payments.log.
|
|
|
|
Использование:
|
|
from app.utils.payment_logger import payment_logger
|
|
|
|
payment_logger.info("Создан YooKassa платеж %s на %s", payment_id, amount)
|
|
payment_logger.error("Ошибка обработки webhook: %s", error)
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import logging
|
|
from typing import Optional
|
|
|
|
# Выделенный логгер для всех платежных операций
|
|
payment_logger = logging.getLogger("app.payments")
|
|
|
|
|
|
def configure_payment_logger(
|
|
handler: logging.Handler,
|
|
formatter: Optional[logging.Formatter] = None,
|
|
level: int = logging.INFO,
|
|
) -> None:
|
|
"""Настроить payment_logger с указанным хэндлером.
|
|
|
|
Args:
|
|
handler: Хэндлер для записи логов (FileHandler, StreamHandler и т.д.)
|
|
formatter: Форматтер для логов (опционально)
|
|
level: Уровень логирования (по умолчанию INFO)
|
|
"""
|
|
payment_logger.setLevel(level)
|
|
|
|
if formatter:
|
|
handler.setFormatter(formatter)
|
|
|
|
payment_logger.addHandler(handler)
|
|
|
|
# Предотвращаем дублирование в родительских логгерах
|
|
payment_logger.propagate = False
|
|
|
|
|
|
def get_payment_logger() -> logging.Logger:
|
|
"""Получить экземпляр payment_logger.
|
|
|
|
Альтернативный способ получения логгера для модулей,
|
|
которые предпочитают явный вызов функции.
|
|
|
|
Returns:
|
|
Настроенный логгер платежей
|
|
"""
|
|
return payment_logger
|