import logging
import json
from datetime import datetime

class JSONFormatter(logging.Formatter):
    def format(self, record):
        log_obj = {
            "timestamp": datetime.utcnow().isoformat() + "Z",
            "level": record.levelname,
            "logger": record.name,
            "message": record.getMessage(),
        }
        
        # Inject standard context if present
        if hasattr(record, 'firebase_uid'):
            log_obj["firebase_uid"] = record.firebase_uid
        if hasattr(record, 'request_id'):
            log_obj["request_id"] = record.request_id
            
        # Error stack traces
        if record.exc_info:
            log_obj["exception"] = self.formatException(record.exc_info)
            
        return json.dumps(log_obj)

def setup_enterprise_logging():
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)
    
    # Remove existing standard handlers
    for handler in logger.handlers[:]:
        logger.removeHandler(handler)
        
    json_handler = logging.StreamHandler()
    json_handler.setFormatter(JSONFormatter())
    logger.addHandler(json_handler)
    
    return logger
