import logging
import datetime

logger = logging.getLogger('ratelimit')
logger.setLevel(logging.INFO)

# Create handlers (if not already configured - useful for avoiding duplicate logs in some environments)
if not logger.hasHandlers():
    ch = logging.StreamHandler()
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)


def log_rate_limit_adjustment(resource_id, previous_limit, new_limit, trigger_metric, threshold, reason):
    """Logs rate limit adjustments with relevant information.

    Args:
        resource_id (str): The ID of the resource being rate limited.
        previous_limit (int): The previous rate limit.
        new_limit (int): The new rate limit.
        trigger_metric (str): The metric that triggered the adjustment.
        threshold (float): The threshold that was exceeded.
        reason (str): A description of why the adjustment was made.
    """
    log_message = f"Rate limit adjusted for resource: {resource_id}. " \
                  f"Previous limit: {previous_limit}, New limit: {new_limit}. " \
                  f"Triggered by {trigger_metric} exceeding threshold: {threshold}. " \
                  f"Reason: {reason}"
    logger.info(log_message)

if __name__ == '__main__':
    # Example usage
    log_rate_limit_adjustment(
        resource_id='user_api',
        previous_limit=100,
        new_limit=50,
        trigger_metric='cpu_usage',
        threshold=0.8,
        reason='CPU usage exceeded 80% threshold'
    )
