Spaces:
Sleeping
Sleeping
| 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 |