import json
import logging

# Configure logger
logger = logging.getLogger(__name__)

def safe_json_loads(data: str, default_value=None):
    """
    Safely parse JSON string and handle any decoding errors.
    
    Args:
        data: JSON string to parse
        default_value: Value to return if parsing fails (defaults to empty list)
    
    Returns:
        Parsed JSON data or default value if parsing fails
    """
    if default_value is None:
        default_value = []
        
    if not data:
        return default_value
        
    try:
        return json.loads(data)
    except json.JSONDecodeError as e:
        # Log the error with context, but truncate the data to avoid huge log entries
        truncated_data = str(data)[:100] + '...' if len(str(data)) > 100 else str(data)
        logger.error(f"JSON decode error: {str(e)}. Data preview: {truncated_data}")
        return default_value
