""" 简单的监控和日志系统 替换复杂的调试输出 """ import time import logging from functools import wraps from flask import request # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger('seedream') def log_api_call(func): """API调用日志装饰器""" @wraps(func) def wrapper(*args, **kwargs): start_time = time.time() endpoint = request.endpoint method = request.method logger.info(f"API调用开始: {method} {endpoint}") try: result = func(*args, **kwargs) duration = time.time() - start_time logger.info(f"API调用成功: {method} {endpoint} - {duration:.2f}s") return result except Exception as e: duration = time.time() - start_time logger.error(f"API调用失败: {method} {endpoint} - {duration:.2f}s - {str(e)}") raise return wrapper def log_generation_metrics(model_endpoint, prompt_length, image_count=0): """记录生成指标""" logger.info( f"生成请求: 模型={model_endpoint}, " f"提示长度={prompt_length}, 图片数量={image_count}" ) def log_error(error_type, error_message, context=None): """统一错误日志""" logger.error(f"{error_type}: {error_message}") if context: logger.error(f"上下文: {context}") def log_request_id(request_id, action="generated", model=None, prompt=None): """ 明确记录 request_id 到日志 用于后续从 Hugging Face Spaces 日志中提取和删除 日志格式: [REQUEST_ID] {request_id} | action={action} | model={model} """ log_parts = [f"[REQUEST_ID] {request_id}", f"action={action}"] if model: log_parts.append(f"model={model}") if prompt: # 截断过长的 prompt prompt_preview = prompt[:100] + "..." if len(prompt) > 100 else prompt log_parts.append(f"prompt={prompt_preview}") logger.info(" | ".join(log_parts)) def get_health_status(): """获取健康状态""" return { 'status': 'healthy', 'timestamp': time.time(), 'version': '2.0-optimized' }