Log Analyzer es un sistema de gestión de logs de alto rendimiento construido con FastAPI y Python. Proporciona caché temporal, limpieza automática de logs antiguos y almacenamiento persistente.
sequenceDiagram
participant Cliente
participant API
participant Caché
participant Limpiador
participant BD
Cliente->>API: POST /logs (Añadir logs)
API->>Caché: Almacenar logs
Caché->>Limpiador: Registrar timestamps
API-->>Cliente: 201 Created
Note over API,BD: Tareas en Background
API->>Limpiador: Limpiar logs antiguos
Limpiador->>Caché: Remover logs antiguos
API->>BD: Guardar logs eliminados
Cliente->>API: GET /logs?start&end
API->>Caché: Consultar logs
Caché-->>API: Logs filtrados
API-->>Cliente: 200 OK + Logs
- Maneja las peticiones HTTP
- Coordina el flujo de datos
- Gestiona tareas en background
- Almacenamiento en memoria usando SortedDict
- Organiza logs por timestamp
- Permite búsquedas eficientes
- Mantiene ventana temporal configurable
- Elimina logs antiguos automáticamente
- Registra timestamps para seguimiento
- Almacenamiento persistente
- Guarda logs eliminados del caché
- Mantiene histórico completo
# Clonar repositorio
git clone <url-repositorio>
cd AlgoritmiaYOptimizacionDeCodigoEnPython
# Crear entorno virtual
python -m venv venv
.\venv\Scripts\activate
# Instalar dependencias
pip install -r requirements.txt# Iniciar servidor API
python main.pyEl servidor se iniciará en http://localhost:8000
curl -X POST "http://localhost:8000/logs" \
-H "Content-Type: application/json" \
-d '{
"logs": [
{
"timestamp": "2023-04-23T10:00:00",
"tag": "INFO",
"message": "Log de prueba"
}
]
}'curl "http://localhost:8000/logs?start_time=2023-04-23T10:00:00&end_time=2023-04-23T10:05:00"curl "http://localhost:8000/logs/all"El sistema se puede configurar mediante:
window_minutes: Ventana temporal para retención de logsdb_path: Ruta de la base de datos SQLite- Puerto del servidor (por defecto 8000)
-
Almacenamiento Eficiente
- Caché en memoria para acceso rápido
- Organización temporal de logs
- Limpieza automática
-
API RESTful
- Endpoints intuitivos
- Validación de datos
- Documentación automática (Swagger)
-
Persistencia
- Almacenamiento automático de logs antiguos
- Base de datos SQLite
- Transacciones seguras
-
Rendimiento
- Operaciones asíncronas
- Tareas en background
- Búsquedas optimizadas