File size: 2,084 Bytes
affeafa
 
 
 
 
 
 
 
 
 
3d758c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
affeafa
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import logging
import os
import sys
from typing import Optional

log_level_value = os.getenv("LOG_LEVEL", "INFO")
log_level = getattr(logging, log_level_value.upper(), logging.INFO)

log_format = "%(asctime)s - %(levelname)s - %(name)s - [%(process)d] %(message)s"

_default_root_handler: logging.Handler | None = None


def _is_agent_cli_invocation() -> bool:
    script = os.path.basename(sys.argv[0]).lower()
    if script != "agent.py":
        return False
    return any(arg in {"start", "console", "download-files", "dev"} for arg in sys.argv[1:])


def _configure_default_root_handler() -> None:
    """Configure root logging only when no handler is already installed."""
    global _default_root_handler

    if _is_agent_cli_invocation():
        return

    root = logging.getLogger()
    if root.handlers:
        root.setLevel(log_level)
        return

    handler = logging.StreamHandler(sys.stdout)
    handler.setFormatter(logging.Formatter(log_format))
    root.addHandler(handler)
    root.setLevel(log_level)
    _default_root_handler = handler


def detach_default_root_handler() -> None:
    """Detach the handler installed by this module, if present."""
    global _default_root_handler

    if _default_root_handler is None:
        return

    root = logging.getLogger()
    if _default_root_handler in root.handlers:
        root.removeHandler(_default_root_handler)
    _default_root_handler = None


_configure_default_root_handler()

logging.getLogger("httpx").setLevel(logging.WARNING)
logging.getLogger("httpcore").setLevel(logging.WARNING)
logging.getLogger("asyncio").setLevel(logging.WARNING)
logging.getLogger("transformers").setLevel(logging.WARNING)
logging.getLogger("torch").setLevel(logging.WARNING)
logging.getLogger("torchaudio").setLevel(logging.WARNING)
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("filelock").setLevel(logging.WARNING)


def get_logger(name: Optional[str] = None) -> logging.Logger:
    logger_name = name or "open_voice_agent"
    return logging.getLogger(logger_name)


logger = get_logger()