Spaces:
Running
Running
| import os | |
| import logging | |
| from datetime import datetime | |
| class Logger: | |
| _instance = None | |
| def get_logger(name="AppLogger"): | |
| # Configure root logger once | |
| if not getattr(Logger, "_is_configured", False): | |
| Logger._setup_handlers() | |
| Logger._is_configured = True | |
| return logging.getLogger(name) | |
| def _setup_handlers(): | |
| # Get root logger | |
| logger = logging.getLogger() | |
| logger.setLevel(logging.INFO) | |
| # Clear existing handlers to avoid duplicates | |
| if logger.handlers: | |
| logger.handlers.clear() | |
| # Console Handler | |
| c_handler = logging.StreamHandler() | |
| c_handler.setLevel(logging.INFO) | |
| c_format = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') | |
| c_handler.setFormatter(c_format) | |
| logger.addHandler(c_handler) | |
| # File Handler | |
| try: | |
| log_dir = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "logs") | |
| os.makedirs(log_dir, exist_ok=True) | |
| f_handler = logging.FileHandler(os.path.join(log_dir, f"{datetime.now().strftime('%Y-%m-%d')}.log"), encoding='utf-8') | |
| f_handler.setLevel(logging.INFO) | |
| f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') | |
| f_handler.setFormatter(f_format) | |
| logger.addHandler(f_handler) | |
| except Exception as e: | |
| print(f"Failed to setup file logging: {e}") | |