Add new file

This commit is contained in:
Markov Andrey
2026-06-30 09:26:37 +00:00
parent bf563a4a69
commit 52af138bae

53
core/utils/logger.py Normal file
View File

@@ -0,0 +1,53 @@
# -*- coding: utf-8 -*-
"""
Настройка логирования для бота.
Создаёт логгер с выводом в консоль и в файл.
Уровень логирования может быть установлен в конфиге (DEBUG для разработки, INFO для production).
Изменения: удалён aiomysql из списка шумных библиотек (заменён на asyncpg).
"""
import logging
import sys
from pathlib import Path
def setup_logging(profile_name: str, log_file: Path, log_level: int = logging.INFO):
"""
Инициализирует логирование:
- вывод в консоль (StreamHandler)
- вывод в файл (FileHandler)
- снижает уровень шума для сторонних библиотек (slixmpp, asyncpg, qdrant_client и др.)
"""
log_format = '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
# Формат даты: 2026-05-20 15:30:00
date_format = '%Y-%m-%d %H:%M:%S'
# Настройка корневого логгера
logging.basicConfig(
level=log_level,
format=log_format,
datefmt=date_format,
handlers=[
logging.StreamHandler(sys.stdout), # вывод в консоль
logging.FileHandler(log_file, encoding='utf-8') # вывод в файл
]
)
# Уменьшаем многословность некоторых библиотек (они пишут много DEBUG)
noisy_loggers = [
"slixmpp",
"asyncpg", # вместо aiomysql (PostgreSQL)
"qdrant_client",
"httpx",
"gigachat",
"urllib3",
"asyncio",
"aiohttp"
]
for lib in noisy_loggers:
logging.getLogger(lib).setLevel(logging.WARNING)
# Для особо шумных можно ещё снизить, но оставляем WARNING
logging.getLogger("requests").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)