H2P3B / src /logging_config.py
muhammadshaheryar's picture
Add application file
dd1b74d
"""
Logging configuration for the AI Chatbot application
Configures error handling and logging infrastructure as required by the project
"""
import logging
import sys
from datetime import datetime
from pathlib import Path
def setup_logging(log_level=logging.INFO, log_format=None):
"""
Configure logging infrastructure for the application
"""
if log_format is None:
log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# Create logs directory if it doesn't exist
logs_dir = Path("logs")
logs_dir.mkdir(exist_ok=True)
# Configure root logger
root_logger = logging.getLogger()
root_logger.setLevel(log_level)
# Clear any existing handlers
root_logger.handlers.clear()
# Console handler
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(log_level)
console_formatter = logging.Formatter(log_format)
console_handler.setFormatter(console_formatter)
# File handler for general logs
general_log_file = logs_dir / f"app_{datetime.now().strftime('%Y%m%d')}.log"
file_handler = logging.FileHandler(general_log_file)
file_handler.setLevel(log_level)
file_formatter = logging.Formatter(log_format)
file_handler.setFormatter(file_formatter)
# Add handlers to root logger
root_logger.addHandler(console_handler)
root_logger.addHandler(file_handler)
# Also set specific loggers to appropriate levels
logging.getLogger("uvicorn").setLevel(logging.WARNING)
logging.getLogger("fastapi").setLevel(log_level)
logging.getLogger("sqlalchemy").setLevel(logging.WARNING)
def get_logger(name: str) -> logging.Logger:
"""
Get a logger with the specified name
"""
return logging.getLogger(name)
# Initialize logging when module is imported
setup_logging()
# Example usage:
# logger = get_logger(__name__)
# logger.info("Application started")
# logger.error("An error occurred")