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 и переменные среды.
- Расширяемость под сторонние сервисы — можно добавить новые хендлеры для интеграции с системами мониторинга, алертов, облачными хранилищами логов.