MediRAG-API / src /__init__.py
joytheslothh's picture
deploy: clean build
b6f9fa8
"""
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()