import logging import sys from logging.handlers import RotatingFileHandler from pathlib import Path def get_logger(name: str) -> logging.Logger: logger = logging.getLogger(name) if logger.hasHandlers(): return logger logger.setLevel(logging.DEBUG) logs_dir = Path("logs") logs_dir.mkdir(exist_ok=True) formatter = logging.Formatter( fmt="%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%Y-%m-%d %H:%M:%S" ) console_handler = logging.StreamHandler(sys.stdout) console_handler.setLevel(logging.INFO) console_handler.setFormatter(formatter) logger.addHandler(console_handler) file_handler = RotatingFileHandler( logs_dir / "app.log", maxBytes=10 * 1024 * 1024, backupCount=5 ) file_handler.setLevel(logging.DEBUG) file_handler.setFormatter(formatter) logger.addHandler(file_handler) return logger