""" Routes API pour les logs serveur. """ from typing import Optional from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from app.core.dependencies import get_db, verify_api_key from app.crud.log import LogRepository from app.services import console_log_service router = APIRouter() @router.get("/logs") async def get_server_logs( limit: int = 500, offset: int = 0, level: Optional[str] = None, source: Optional[str] = None, log_source: str = "console", api_key_valid: bool = Depends(verify_api_key), db_session: AsyncSession = Depends(get_db) ): """ Récupère les logs serveur avec pagination. Args: log_source: "console" pour les logs stdout/stderr en temps réel, "db" pour les logs stockés en base de données """ if log_source == "console": # Logs console en temps réel logs = console_log_service.get_logs(limit=limit, offset=offset, level=level) return { "logs": logs, "count": console_log_service.get_count(), "limit": limit, "offset": offset, "source": "console" } else: # Logs depuis la base de données repo = LogRepository(db_session) logs = await repo.list(limit=limit, offset=offset, level=level, source=source) return { "logs": [ { "id": log.id, "timestamp": log.created_at, "level": log.level, "message": log.message, "source": log.source, "host": log.host_id, } for log in logs ], "count": len(logs), "limit": limit, "offset": offset, "source": "db" }