aMuseMe / src /amuseme /logger.py
Blazestorm001's picture
chore: tidy Space repository structure
08ab8f1 verified
Raw
History Blame Contribute Delete
1.46 kB
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