""" logger.py — Structured logging with rotating file handler + console output. Usage: from logger import get_logger log = get_logger(__name__) log.info("Bot started") """ import logging from logging.handlers import RotatingFileHandler import config def get_logger(name: str) -> logging.Logger: """Return a configured logger with console + rotating file handlers.""" logger = logging.getLogger(name) # Avoid adding duplicate handlers on repeated calls if logger.handlers: return logger logger.setLevel(logging.DEBUG) formatter = logging.Formatter( fmt="%(asctime)s | %(levelname)-8s | %(name)s | %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) # Console handler — INFO and above console = logging.StreamHandler() console.setLevel(logging.INFO) console.setFormatter(formatter) logger.addHandler(console) # Rotating file handler — DEBUG and above file_handler = RotatingFileHandler( config.LOG_FILE, maxBytes=config.LOG_MAX_BYTES, backupCount=config.LOG_BACKUP_COUNT, encoding="utf-8", ) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger