# utils/logger_setup.py import logging from colorlog import ColoredFormatter def setup_logger(level=logging.INFO, log_file=None): """ Настраивает корневой логгер для вывода цветных логов в консоль и (опционально) записи в файл. :param level: Уровень логирования (например, logging.DEBUG) :param log_file: Путь к файлу лога (если не None, логи будут писаться в этот файл) """ logger = logging.getLogger() if logger.hasHandlers(): logger.handlers.clear() # Консольный хендлер с colorlog console_handler = logging.StreamHandler() log_format = ( "%(log_color)s%(asctime)s [%(levelname)s]%(reset)s %(blue)s%(message)s" ) console_formatter = ColoredFormatter( log_format, datefmt="%Y-%m-%d %H:%M:%S", reset=True, log_colors={ "DEBUG": "cyan", "INFO": "green", "WARNING": "yellow", "ERROR": "red", "CRITICAL": "bold_red" } ) console_handler.setFormatter(console_formatter) logger.addHandler(console_handler) # Если указан log_file, добавляем файловый хендлер if log_file is not None: file_handler = logging.FileHandler(log_file, mode="w", encoding="utf-8") file_format = "%(asctime)s [%(levelname)s] %(message)s" file_formatter = logging.Formatter(file_format, datefmt="%Y-%m-%d %H:%M:%S") file_handler.setFormatter(file_formatter) logger.addHandler(file_handler) logger.setLevel(level) return logger