"""Logging configuration for the Daily Briefing MCP server."""
import logging
import sys
import structlog
from daily_briefing.config import settings
def configure_logging() -> None:
"""Configure structured logging for the server."""
log_level = getattr(logging, settings.log_level.upper(), logging.INFO)
processors = [
structlog.contextvars.merge_contextvars,
structlog.processors.add_log_level,
structlog.processors.TimeStamper(fmt="iso"),
]
if settings.log_level.upper() == "DEBUG":
processors.append(structlog.dev.ConsoleRenderer())
else:
processors.append(structlog.processors.JSONRenderer())
structlog.configure(
processors=processors,
wrapper_class=structlog.make_filtering_bound_logger(log_level),
context_class=dict,
logger_factory=structlog.PrintLoggerFactory(file=sys.stderr),
cache_logger_on_first_use=True,
)
def get_logger(name: str) -> structlog.stdlib.BoundLogger:
"""Get a logger instance."""
return structlog.get_logger(name)