# -*- 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)