Spaces:
Running
Running
| """ | |
| src/__init__.py — Package initializer and logging setup. | |
| Runs once on first `import src`. Sets up logging from config.yaml. | |
| (SRS Section 13) | |
| """ | |
| import logging | |
| import os | |
| def _setup_logging() -> None: | |
| """Configure root logger. No-op if handlers already exist.""" | |
| os.makedirs("logs", exist_ok=True) | |
| log_level = logging.INFO | |
| log_format = "%(asctime)s [%(levelname)s] %(name)s: %(message)s" | |
| log_file = "logs/medirag.log" | |
| # Try to load level from config.yaml | |
| try: | |
| import yaml | |
| with open("config.yaml", "r") as f: | |
| cfg = yaml.safe_load(f) | |
| level_str = cfg.get("logging", {}).get("level", "INFO") | |
| log_level = getattr(logging, level_str.upper(), logging.INFO) | |
| log_file = cfg.get("logging", {}).get("file", log_file) | |
| log_format = cfg.get("logging", {}).get("format", log_format) | |
| except Exception: | |
| pass # Use defaults if config not found (e.g., during tests) | |
| root = logging.getLogger() | |
| if root.handlers: | |
| return # Already configured — don't add duplicate handlers | |
| handlers: list[logging.Handler] = [logging.StreamHandler()] | |
| try: | |
| os.makedirs(os.path.dirname(log_file), exist_ok=True) | |
| handlers.append(logging.FileHandler(log_file, encoding="utf-8")) | |
| except Exception: | |
| pass # File logging optional — don't fail on permission errors | |
| logging.basicConfig(level=log_level, format=log_format, handlers=handlers) | |
| _setup_logging() | |