BookMind / backend /app /core /logger.py
BookMind Deployer
Deploy BookMind to HF Spaces - exclude large files
806d445
Raw History Blame Contribute Delete
1.4 kB
import logging
import sys
from logging.handlers import RotatingFileHandler
from app.core.config import Config
def setup_logging(name: str = "booksage") -> logging.Logger:
"""
Set up logging configuration with file and console handlers.
Args:
name: Logger name
Returns:
Configured logger instance
"""
# Ensure logs directory exists
Config.LOGS_DIR.mkdir(exist_ok=True)
logger = logging.getLogger(name)
logger.setLevel(logging.DEBUG)
# Prevent adding handlers multiple times
if logger.handlers:
return logger
# Log format
formatter = logging.Formatter(
"%(asctime)s - %(name)s - %(levelname)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S"
)
# File handler with rotation
log_file = Config.LOGS_DIR / "app.log"
file_handler = RotatingFileHandler(
log_file,
maxBytes=10 * 1024 * 1024, # 10MB
backupCount=5,
encoding="utf-8"
)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
# Console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(logging.INFO)
console_handler.setFormatter(formatter)
# Add handlers
logger.addHandler(file_handler)
logger.addHandler(console_handler)
return logger
# Create default logger instance
logger = setup_logging()