Spaces:
Build error
Build error
| """Structured logging configuration.""" | |
| import logging | |
| import sys | |
| from typing import Any | |
| import structlog | |
| from structlog.types import Processor | |
| from app.core.config import settings | |
| def configure_logging() -> None: | |
| """Configure structured logging.""" | |
| # Standard library logging | |
| logging.basicConfig( | |
| format="%(message)s", | |
| stream=sys.stdout, | |
| level=getattr(logging, settings.LOG_LEVEL.upper()), | |
| ) | |
| # Structlog processors | |
| processors: list[Processor] = [ | |
| structlog.contextvars.merge_contextvars, | |
| structlog.stdlib.add_log_level, | |
| structlog.stdlib.add_logger_name, | |
| structlog.processors.TimeStamper(fmt="iso"), | |
| structlog.processors.StackInfoRenderer(), | |
| structlog.processors.format_exc_info, | |
| ] | |
| if settings.DEBUG: | |
| processors.append(structlog.dev.ConsoleRenderer()) | |
| else: | |
| processors.append(structlog.processors.JSONRenderer()) | |
| structlog.configure( | |
| processors=processors, | |
| wrapper_class=structlog.stdlib.BoundLogger, | |
| context_class=dict, | |
| logger_factory=structlog.stdlib.LoggerFactory(), | |
| cache_logger_on_first_use=True, | |
| ) | |
| def get_logger(*args: Any, **kwargs: Any) -> structlog.BoundLogger: | |
| """Get a structured logger instance.""" | |
| return structlog.get_logger(*args, **kwargs) | |