Hopsakee's picture
Upload folder using huggingface_hub
5fe3652 verified
import logging
import os
from pathlib import Path
from logging.handlers import RotatingFileHandler
# Module level logger instance
_logger = None
def setup_logger(log_file='fabric_to_espanso.log'):
"""
Set up and configure the logger for the application.
Args:
log_file (str): Name of the log file. Defaults to 'fabric_to_espanso.log'.
Returns:
logging.Logger: Configured logger object.
"""
global _logger
if _logger is not None:
return _logger
logger = logging.getLogger('fabric_to_espanso')
# Clean up any existing handlers
logger.handlers.clear()
# Set log level and prevent propagation
logger.setLevel(logging.INFO)
logger.propagate = False
# Get the project root directory (2 levels up from logger.py)
project_root = Path(__file__).parent.parent.parent
# Create logs directory if it doesn't exist - use absolute path
log_dir = project_root / "logs"
log_dir.mkdir(exist_ok=True)
# Create file handlers with absolute path
log_file_path = log_dir / f"{log_file}"
file_handler = RotatingFileHandler(log_file_path, maxBytes=1024*1024, backupCount=5)
console_handler = logging.StreamHandler()
# Set log levels
file_handler.setLevel(logging.DEBUG)
console_handler.setLevel(logging.DEBUG)
# Create formatters and add it to handlers
file_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_format)
console_handler.setFormatter(console_format)
# Add handlers to the logger
logger.addHandler(file_handler)
logger.addHandler(console_handler)
_logger = logger
return logger