import logging import time from datetime import datetime from fastapi import FastAPI, Request from fastapi.middleware.cors import CORSMiddleware from alien_store.api.router import router from alien_gateway.config import settings app = FastAPI( title=f"{settings.PROJECT_NAME} - Store Service", version="1.0.0" ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) logger = logging.getLogger("alien_store") # 轻量日志中间件:仅记录方法、路径、状态码、耗时和客户端 @app.middleware("http") async def log_requests(request: Request, call_next): start = time.perf_counter() try: response = await call_next(request) return response finally: duration_ms = (time.perf_counter() - start) * 1000 logger.info( "[%s] HTTP %s %s -> %s (%.2f ms) client=%s", datetime.utcnow().isoformat(timespec="milliseconds") + "Z", request.method, request.url.path, getattr(response, "status_code", "N/A"), duration_ms, request.client.host if request.client else "-", ) # 挂载业务路由 app.include_router(router, prefix="/api/store", tags=["Store"]) @app.get("/health") async def health(): return {"service": "alien_store", "status": "ok"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8001)