Base para el flujo de ramas por cliente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
57 lines
2.0 KiB
Markdown
57 lines
2.0 KiB
Markdown
# Visualización de logs
|
|
|
|
El backend escribe en `logs/backend.log` una línea JSON por evento (ver
|
|
[logging-plan.md](logging-plan.md)), con campos como `emp_id`, `username`,
|
|
`http_method`, `endpoint` y `status_code`. Es el formato correcto para
|
|
buscar/cargar en un dashboard, pero incómodo de leer a simple vista con
|
|
`cat`/`tail`. Estas son las dos formas recomendadas de verlo cómodo desde la
|
|
terminal.
|
|
|
|
## `jq` — filtrar y colorear en vivo
|
|
|
|
Instalación: `brew install jq`
|
|
|
|
```bash
|
|
# seguir el log en vivo, con formato e indentación
|
|
tail -f logs/backend.log | jq .
|
|
|
|
# solo las líneas de un empleado puntual
|
|
tail -f logs/backend.log | jq 'select(.emp_id == 10)'
|
|
|
|
# solo errores/warnings
|
|
tail -f logs/backend.log | jq 'select(.level == "ERROR" or .level == "WARNING")'
|
|
|
|
# solo llamadas a un endpoint específico
|
|
tail -f logs/backend.log | jq 'select(.endpoint == "Items")'
|
|
|
|
# ver solo unos campos, en una línea por evento
|
|
tail -f logs/backend.log | jq -c '{ts: .timestamp, user: .username, ep: .endpoint, status: .status_code}'
|
|
```
|
|
|
|
## `lnav` — visor interactivo
|
|
|
|
Instalación: `brew install lnav`
|
|
|
|
```bash
|
|
lnav logs/backend.log
|
|
```
|
|
|
|
`lnav` detecta el formato JSON automáticamente y da un visor interactivo con:
|
|
|
|
- colores por nivel (`INFO`/`WARNING`/`ERROR`).
|
|
- búsqueda de texto con `/`.
|
|
- filtros en vivo con `:filter-in` / `:filter-out` (por ejemplo
|
|
`:filter-in emp_id.:.10` para quedarte solo con el empleado 10).
|
|
- queries tipo SQL sobre los campos del log con `;` (por ejemplo
|
|
`;SELECT emp_id, username, endpoint, status_code FROM backend_log WHERE level = 'ERROR'`).
|
|
|
|
Es la opción más cómoda para explorar el log completo o investigar un
|
|
incidente puntual sin escribir comandos `jq` largos.
|
|
|
|
## Dashboard centralizado (a futuro)
|
|
|
|
Si más adelante se necesita buscar por usuario desde una UI (no la terminal)
|
|
o cruzar logs de varios despliegues, la opción estándar es enviar
|
|
`logs/backend.log` a algo como Grafana Loki + Promtail. Es infraestructura
|
|
adicional, no necesaria mientras el volumen de logs se maneje bien con `jq`/`lnav`.
|