ruby2210/rag-chatbot
0
1"""2Error handling and logging infrastructure for the RAG Chatbot application.3"""4import logging5from logging.handlers import RotatingFileHandler6import os7from pathlib import Path8 9 10def setup_logging():11 """12 Set up the logging configuration for the application.13 """14 # Create logs directory if it doesn't exist15 logs_dir = Path("logs")16 logs_dir.mkdir(exist_ok=True)17 18 # Create formatter19 formatter = logging.Formatter(20 '%(asctime)s - %(name)s - %(levelname)s - %(message)s'21 )22 23 # Create file handler with rotation24 file_handler = RotatingFileHandler(25 'logs/app.log',26 maxBytes=10*1024*1024, # 10MB27 backupCount=528 )29 file_handler.setLevel(logging.INFO)30 file_handler.setFormatter(formatter)31 32 # Create console handler33 console_handler = logging.StreamHandler()34 console_handler.setLevel(logging.INFO)35 console_handler.setFormatter(formatter)36 37 # Get root logger and configure it38 root_logger = logging.getLogger()39 root_logger.setLevel(logging.INFO)40 root_logger.addHandler(file_handler)41 root_logger.addHandler(console_handler)42 43 # Set specific loggers to WARNING to reduce noise44 logging.getLogger("urllib3").setLevel(logging.WARNING)45 logging.getLogger("qdrant_client").setLevel(logging.WARNING)46 logging.getLogger("sqlalchemy").setLevel(logging.WARNING)47 48 49def get_logger(name: str) -> logging.Logger:50 """51 Get a logger with the specified name.52 """53 return logging.getLogger(name)54 55 56# Initialize logging when this module is imported57setup_logging()