Claude Code - Backend Implementation Specialist
Add complete AI Todo Chatbot backend application
b93a6a5
"""
Logging configuration for the AI chatbot backend.
This module sets up structured logging with appropriate levels
and formats for production use.
"""
import logging
import sys
from typing import Optional
import os
def setup_logging(
level: Optional[str] = None,
log_file: Optional[str] = None
) -> None:
"""
Configure structured logging for the application.
Args:
level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
log_file: Optional file path for log output
"""
# Get log level from environment or parameter
log_level_str = level or os.getenv("LOG_LEVEL", "INFO")
log_level = getattr(logging, log_level_str.upper(), logging.INFO)
# Create formatter
formatter = logging.Formatter(
fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# Configure root logger
root_logger = logging.getLogger()
root_logger.setLevel(log_level)
# Remove existing handlers
root_logger.handlers.clear()
# Console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(log_level)
console_handler.setFormatter(formatter)
root_logger.addHandler(console_handler)
# File handler (if specified)
if log_file:
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(log_level)
file_handler.setFormatter(formatter)
root_logger.addHandler(file_handler)
# Set specific logger levels
logging.getLogger("uvicorn").setLevel(logging.INFO)
logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING)
logging.info(f"Logging configured at {log_level_str} level")
# Auto-configure logging on import
setup_logging()