Spaces:
Running on Zero
Running on Zero
| """ | |
| logging_config.py | |
| ------------------------ | |
| Shared logging configuration for the Agentic RAG Space. | |
| Every module gets its logger via: | |
| from logging_config import get_logger | |
| logger = get_logger(__name__) | |
| """ | |
| import logging | |
| import sys | |
| CONFIGURED = False | |
| def _configure_root_logger() -> None: | |
| """ | |
| Configure the root logger once, on first get_logger() call. | |
| Format: "2026-07-16 10:32:01 [INFO] retrieval: best_sim=0.812" | |
| Gives timestamp, level, module name, and message — everything you | |
| need to trace an issue back to its source without bracket-tag | |
| guesswork. | |
| """ | |
| global CONFIGURED | |
| if CONFIGURED: | |
| return | |
| handler = logging.StreamHandler(sys.stdout) | |
| handler.setFormatter( | |
| logging.Formatter( | |
| fmt="%(asctime)s [%(levelname)s] %(name)s: %(message)s", | |
| datefmt="%Y-%m-%d %H:%M:%S", | |
| ) | |
| ) | |
| root = logging.getLogger() | |
| root.setLevel(logging.INFO) # DEBUG is available per-module if needed | |
| root.addHandler(handler) | |
| CONFIGURED = True | |
| def get_logger(name: str) -> logging.Logger: | |
| """ | |
| Return a module-scoped logger. Call once per module at the top: | |
| from logging_config import get_logger | |
| logger = get_logger(__name__) | |
| __name__ becomes the module name in every log line (e.g. "retrieval", | |
| "generation", "vectorstore"), so you always know the source at a glance. | |
| """ | |
| _configure_root_logger() | |
| return logging.getLogger(name) | |