import logging import os import sys from logging.handlers import RotatingFileHandler from pathlib import Path LOG_DIR = Path(__file__).resolve().parent.parent / "logs" LOG_DIR.mkdir(exist_ok=True) LOG_FILE = LOG_DIR / "turbosu.log" LOG_FORMAT = logging.Formatter( "[%(asctime)s] [%(levelname)s] [%(name)s] %(message)s", datefmt="%Y-%m-%d %H:%M:%S", ) def setup_logger(name: str, level: int = logging.DEBUG) -> logging.Logger: logger = logging.getLogger(name) logger.setLevel(level) logger.propagate = False if not logger.handlers: fh = RotatingFileHandler( LOG_FILE, maxBytes=10 * 1024 * 1024, backupCount=5, encoding="utf-8" ) fh.setLevel(logging.DEBUG) fh.setFormatter(LOG_FORMAT) logger.addHandler(fh) ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.INFO) ch.setFormatter(LOG_FORMAT) logger.addHandler(ch) return logger def get_logger(name: str) -> logging.Logger: return setup_logger(name)