File size: 1,043 Bytes
62516b8
08b192a
 
62516b8
 
383b8a3
 
 
 
 
 
 
 
 
 
 
 
 
62516b8
383b8a3
62516b8
08b192a
62516b8
383b8a3
08b192a
62516b8
383b8a3
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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)