Ziggy
Awaaz: consumer voice coaching — session-scoped history, config-aware analyzer filters, softened narratives, Awaaz design identity
2a762ba | """Structured logging configuration.""" | |
| import logging | |
| import sys | |
| from typing import Optional | |
| from app.config import get_settings | |
| def setup_logging(name: Optional[str] = None, level: Optional[str] = None) -> logging.Logger: | |
| """Configure and return a logger with consistent formatting.""" | |
| settings = get_settings() | |
| log_level = level or settings.log_level | |
| logger_name = name or "pinnacle" | |
| logger = logging.getLogger(logger_name) | |
| logger.setLevel(getattr(logging, log_level.upper())) | |
| # Avoid duplicate handlers | |
| if not logger.handlers: | |
| handler = logging.StreamHandler(sys.stdout) | |
| handler.setLevel(getattr(logging, log_level.upper())) | |
| formatter = logging.Formatter(settings.log_format) | |
| handler.setFormatter(formatter) | |
| logger.addHandler(handler) | |
| return logger | |