import logging
from logging.handlers import RotatingFileHandler
import os
from app.settings import Config

# Define whether logging should be enabled
is_logging = True  # Set to False to disable logging

conf = Config()
# Log file settings
LOG_FILE = f"{conf.LOG_DIR}/app.log"
LOG_LEVEL = logging.INFO

def setup_logging():
    """Configure logging for the entire application."""
    if not is_logging:
        # Disable all logging if is_logging is False
        logging.disable(logging.CRITICAL)
        return
    
    # Create a logger
    logger = logging.getLogger()
    logger.setLevel(LOG_LEVEL)
    
    # Create a rotating file handler to store logs in a file
    file_handler = RotatingFileHandler(LOG_FILE, maxBytes=5 * 1024 * 1024, backupCount=2, encoding='utf-8')
    file_handler.setLevel(LOG_LEVEL)
    
    # Create a stream handler to log to console
    stream_handler = logging.StreamHandler()
    stream_handler.setLevel(LOG_LEVEL)
    
    # Define the format for log messages
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    file_handler.setFormatter(formatter)
    stream_handler.setFormatter(formatter)
    
    # Add the handlers to the logger
    logger.addHandler(file_handler)
    logger.addHandler(stream_handler)
    
    logging.info("Logging setup complete")

# Call the function to set up logging when the module is imported
setup_logging()