BlakeL's picture
Upload 115 files
3f9f85b verified
"""
Logging utilities for Wanderlust AI.
This module provides centralized logging configuration and utilities.
"""
import logging
import sys
from typing import Optional
def setup_logging(level: str = "INFO", log_file: Optional[str] = None) -> None:
"""
Set up logging configuration for the application.
Args:
level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
log_file: Optional log file path
"""
# Convert string level to logging constant
numeric_level = getattr(logging, level.upper(), logging.INFO)
# Create formatter
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
# Set up console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
# Set up root logger
root_logger = logging.getLogger()
root_logger.setLevel(numeric_level)
root_logger.addHandler(console_handler)
# Add file handler if specified
if log_file:
file_handler = logging.FileHandler(log_file)
file_handler.setFormatter(formatter)
root_logger.addHandler(file_handler)
# Set specific logger levels for noisy libraries
logging.getLogger('urllib3').setLevel(logging.WARNING)
logging.getLogger('requests').setLevel(logging.WARNING)
def get_logger(name: str) -> logging.Logger:
"""
Get a logger instance for the given name.
Args:
name: Logger name (usually __name__)
Returns:
Logger instance
"""
return logging.getLogger(name)