Files
assistant/agent/utils/logger.py

57 lines
1.5 KiB
Python
Raw Normal View History

"""
Logging utilities for B2B Shopping AI Assistant
"""
import logging
import sys
from typing import Optional
import structlog
from structlog.types import Processor
def setup_logging(level: str = "INFO") -> None:
"""Setup structured logging configuration"""
# Configure standard library logging
logging.basicConfig(
format="%(message)s",
stream=sys.stdout,
level=getattr(logging, level.upper()),
)
# Define processors for structlog
shared_processors: list[Processor] = [
structlog.contextvars.merge_contextvars,
structlog.processors.add_log_level,
structlog.processors.TimeStamper(fmt="iso"),
structlog.stdlib.PositionalArgumentsFormatter(),
structlog.processors.StackInfoRenderer(),
structlog.processors.UnicodeDecoder(),
]
# Configure structlog
structlog.configure(
processors=shared_processors + [
structlog.stdlib.ProcessorFormatter.wrap_for_formatter,
],
logger_factory=structlog.stdlib.LoggerFactory(),
wrapper_class=structlog.stdlib.BoundLogger,
cache_logger_on_first_use=True,
)
def get_logger(name: Optional[str] = None) -> structlog.stdlib.BoundLogger:
"""Get a structured logger instance
Args:
name: Logger name, defaults to module name
Returns:
Configured structlog logger
"""
return structlog.get_logger(name)
# Create default logger
logger = get_logger("agent")