import logging import os import sys def _resolve_log_level() -> int: # Prefer app-specific env var; fallback keeps backward compatibility. level_name = (os.getenv("APP_LOG_LEVEL") or os.getenv("LOG_LEVEL") or "INFO") return getattr(logging, level_name.strip().upper(), logging.INFO) def _resolve_log_stream(): # stderr is usually captured most reliably by hosted runtimes. if (os.getenv("APP_LOG_STREAM") or "stderr").strip().lower() == "stdout": return sys.stdout return sys.stderr def configure_logging() -> None: level = _resolve_log_level() logging.basicConfig( level=level, format="%(asctime)s | %(levelname)s | %(name)s | %(message)s", stream=_resolve_log_stream(), force=True, ) # Ensure these loggers inherit the selected level in all runtimes. for logger_name in ( "src", "httpx", "mcp.client.streamable_http", "chromadb.telemetry.product.posthog", ): logging.getLogger(logger_name).setLevel(level)