Base para el flujo de ramas por cliente. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2.0 KiB
Visualización de logs
El backend escribe en logs/backend.log una línea JSON por evento (ver
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
# 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
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.:.10para 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.