Spaces:
Sleeping
Sleeping
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() | |