| import os |
| import logging |
| from logging.handlers import RotatingFileHandler |
|
|
| |
| 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) |
| |
| |
| if not logger.handlers: |
| logger.setLevel(logging.INFO) |
| |
| |
| file_handler = RotatingFileHandler( |
| LOG_FILE, maxBytes=5 * 1024 * 1024, backupCount=3, encoding='utf-8' |
| ) |
| file_handler.setLevel(logging.INFO) |
| |
| |
| 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 |
|
|