Skip to content

m1dn1ghtm4dne55/logger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

logger

logger — это модульная система логирования для Python с поддержкой кастомного форматирования логов (в JSON), логирования в файл, в консоль, а также отправки логов в webhook (например, для централизованного сбора ошибок и алертов). Все параметры гибко настраиваются через YAML и переменные окружения.

Возможности

  • Логирование в STDOUT (консоль), в файлы с поддержкой ротации и в любой endpoint через webhook (асинхронно).
  • Форматирование логов в читаемый формат и/или JSON.
  • Централизованная настройка через YAML-файл logging.yaml, переменные окружения и отдельный файл констант.
  • Расширяемая архитектура — легко подключить новые хендлеры или форматтеры.

Структура

utils/
│
├── configs/
│   ├── constants.py      # Константы и переменные окружения для путей, webhook и лимита файлов
│   └── logging.yaml      # Основная конфигурация логирования
│
└── logger/
    ├── json_formatter.py # Форматтер логов в JSON
    ├── log_manager.py    # Класс для централизованной инициализации логирования и работы с логгерами
    └── web_handler.py    # Handler для отправки логов через webhook

Описание компонентов

  • json_formatter.py
    Определяет класс JSONFormatter, наследующий logging.Formatter, который сериализует события логирования в JSON с полезными метаданными — время, уровень, имя логгера, модуль, функция, поток, процесс.

  • log_manager.py
    Класс LoggerConfiguration загружает и применяет конфиг логирования. Класс LoggerManager используется как обёртка над стандартным логгером, поддерживает кеширование через lru_cache. Все параметры подставляются из переменных окружения для гибкости и деплоймента.

  • web_handler.py
    WebhookHandler — асинхронный logging.Handler для отправки логов в webhook endpoint. Имеет механизм очереди, повторных попыток, graceful shutdown, fallback-логгирование в случае ошибок.

  • constants.py и logging.yaml
    — вынесение ограничений, путей и url'ов в отдельное хранилище для централизованного управления и облегчения использования на разных окружениях.

Окружение

  • Python 3.8+
  • aiohttp, PyYAML, python-dotenv и стандартный logging

Применение

  • Микросервисы — удобно отправлять логи каждого сервиса в централизованный endpoint для мониторинга и алертинга; интеграция с webhook позволяет гибко маршрутизировать ошибки и события.
  • Продуктовые, pet-проекты и корпоративные решения — подходит для проектов с высокими требованиями к дебагу: легко реализуется ротация лог-файлов, гибкая фильтрация по уровням; адаптация формата (читаемый/JSON).
  • Масштабируемые и распределённые системы — шлюзы, обработчики очередей, API-сервера, фоновые worker'ы: лёгкое подключение к разным точкам сбора и хранения логов.
  • Тестовые среды и CI/CD пайплайны — универсальность компонента позволяет использовать единые настройки логирования для разных окружений через YAML и переменные среды.
  • Расширяемость под сторонние сервисы — можно добавить новые хендлеры для интеграции с системами мониторинга, алертов, облачными хранилищами логов.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages