Spaces:
Sleeping
Sleeping
| """Central logging configuration for xIQA.""" | |
| from __future__ import annotations | |
| import logging | |
| import os | |
| import sys | |
| _CONFIGURED = False | |
| def setup_logging(level: int | str | None = None) -> None: | |
| """Configure root logger with a standard format. | |
| """ | |
| global _CONFIGURED | |
| if level is None: | |
| level_name = os.environ.get('XIQA_LOG_LEVEL', 'INFO').upper() | |
| level = getattr(logging, level_name, logging.INFO) | |
| root = logging.getLogger() | |
| root.setLevel(level) | |
| if _CONFIGURED: | |
| return | |
| handler = logging.StreamHandler(sys.stderr) | |
| handler.setFormatter(logging.Formatter('%(levelname)s [%(name)s] %(message)s')) | |
| root.addHandler(handler) | |
| _CONFIGURED = True | |
| def get_logger(name: str) -> logging.Logger: | |
| """Return a module logger, configuring root logging on first use.""" | |
| setup_logging() | |
| return logging.getLogger(name) | |