""" Настройка логирования для бота. Консольный вывод (stdout) + опциональный вывод в файл logs/bot.log. Уровень настраивается через LOG_LEVEL в .env (по умолчанию INFO). """ import logging import os import sys from pathlib import Path def setup_logging() -> logging.Logger: """Настроить root-логгер: консоль + файл (если logs/ существует). Returns: Настроенный root-логгер. """ level_name = os.getenv("LOG_LEVEL", "INFO").upper() level = getattr(logging, level_name, logging.INFO) formatter = logging.Formatter( "%(asctime)s [%(levelname)-8s] %(name)s: %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) # Console handler — stdout console = logging.StreamHandler(sys.stdout) console.setLevel(level) console.setFormatter(formatter) root = logging.getLogger() root.setLevel(level) root.addHandler(console) # File handler — logs/bot.log (если директория logs доступна) log_dir = Path("logs") if log_dir.exists(): file_handler = logging.FileHandler( log_dir / "bot.log", encoding="utf-8" ) file_handler.setLevel(level) file_handler.setFormatter(formatter) root.addHandler(file_handler) # Подавить шум от aiohttp и discord.internal logging.getLogger("aiohttp").setLevel(logging.WARNING) logging.getLogger("discord").setLevel(logging.INFO) return root