Spaces:
Running on Zero
Running on Zero
| import os | |
| import logging | |
| from logging.handlers import RotatingFileHandler | |
| # Ensure logs directory exists at the project root | |
| PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), '..', '..')) | |
| LOGS_DIR = os.path.join(PROJECT_ROOT, "logs") | |
| os.makedirs(LOGS_DIR, exist_ok=True) | |
| LOG_FILE = os.path.join(LOGS_DIR, "model_io.log") | |
| def get_logger(name: str) -> logging.Logger: | |
| """ | |
| Returns a configured logger with a RotatingFileHandler. | |
| Logs are written to logs/model_io.log with a max size of 5MB and 3 backups. | |
| """ | |
| logger = logging.getLogger(name) | |
| # Only configure if no handlers are present to avoid duplicate logs | |
| if not logger.handlers: | |
| logger.setLevel(logging.INFO) | |
| # 5 MB max per file, keep 3 old copies | |
| file_handler = RotatingFileHandler( | |
| LOG_FILE, maxBytes=5 * 1024 * 1024, backupCount=3, encoding='utf-8' | |
| ) | |
| file_handler.setLevel(logging.INFO) | |
| # Optional: Console handler for real-time visibility | |
| console_handler = logging.StreamHandler() | |
| console_handler.setLevel(logging.INFO) | |
| formatter = logging.Formatter( | |
| '%(asctime)s - %(name)s - %(levelname)s - %(message)s' | |
| ) | |
| file_handler.setFormatter(formatter) | |
| console_handler.setFormatter(formatter) | |
| logger.addHandler(file_handler) | |
| logger.addHandler(console_handler) | |
| return logger | |