Detectar sistemáticamente el problema N+1
Se explica el flujo práctico de depuración de N+1 con Telescope. No basta con darse cuenta de que “se repite el mismo SELECT”; se puede realizar como flujo completo, incluida la verificación después de corregir.Localiza peticiones lentas en Requests
Abre
/telescope y en la pestaña Requests identifica las peticiones con mayor tiempo de ejecución.Revisa el SQL ejecutado en Queries
Al abrir el detalle de la petición, se muestran todas las consultas SQL ejecutadas durante esa petición. Si se repiten sentencias SELECT similares, es un N+1.
dd() ni logs de depuración, se puede completar todo este flujo en el navegador.
Seguimiento de peticiones específicas con etiquetas
Telescope tiene una función de etiquetas. ConTelescope::tag() puedes añadir etiquetas arbitrarias a las entradas, y con el filtro del dashboard puedes acotar rápidamente solo las entradas con esa etiqueta.
Es muy útil cuando quieres seguir solo el procesamiento relacionado con un ID de usuario o de pedido concreto.
user:42 en el Search de /telescope/requests para listar solo las peticiones del usuario ID=42.
Asignar etiquetas automáticamente a los modelos
Con el métodotags del TelescopeServiceProvider puedes asignar un ID de modelo concreto a todas las entradas.
HasTags en el modelo, cuando ese modelo se registra se le añaden etiquetas automáticamente.
Uso del Dump watcher
Al usardump(), la salida se mezcla con la respuesta HTML y puede dificultar la depuración de APIs. Con el Dump watcher de Telescope puedes separar la salida de dump() de la respuesta del navegador y registrarla en el dashboard.
El uso es sencillo. Basta con llamar a dump() teniendo abierta la pestaña “Dump” de /telescope.
dd(), no detiene la ejecución de la app, por lo que es útil para depurar mientras dejas correr peticiones consecutivas.
Facilitar la depuración de emails con la integración con Mailpit
Combinando el Mail watcher con el servidor SMTP local Mailpit, el flujo de desarrollo de emails mejora enormemente.Depuración de eventos y listeners
Las implementaciones event-driven suelen ser difíciles de depurar. Perseguir “¿se ha disparado el evento?” o “¿qué listener se ha llamado?” mirando los logs resulta pesado. Con el Events watcher de Telescope puedes consultar en una lista los eventos emitidos y sus listeners. Si un listener no se llama, revisa la entrada del evento en la pestaña Events.- El evento se emite pero no se muestran listeners → el listener no está registrado (revisa el
EventServiceProvider) - El evento en sí no se emite → revisa la llamada a
event()
Depuración de jobs de cola
Depurar procesamiento asíncrono solo con logs es difícil. El Jobs watcher de Telescope registra desde el dispatch del job hasta el resultado de la ejecución. Al hacer clic en la entrada de un job fallido, puedes ver la traza y el mensaje de excepción. Al margen de la tablaqueue:failed, también puedes verlo en Telescope, con lo que la investigación de la causa del fallo se agiliza.
Depuración del cliente HTTP
Al depurar comunicaciones con APIs externas, el HTTP Client Watcher resulta útil. Se registran las peticiones realizadas con la facadeHttp:: y sus respuestas.
dd($response->json()), puedes revisarlo en el dashboard.
Conclusión
| Técnica | Efecto |
|---|---|
| Flujo N+1 | Descubrir y corregir problemas de consultas sistemáticamente sin dd() |
| Etiquetado | Filtrado rápido de registros de un usuario o modelo concreto |
| Dump watcher | Ver salidas de dump sin ensuciar la respuesta de la API |
| Integración con Mailpit | Desarrollo de email local más cómodo |
| Events watcher | Confirmación visual del disparo de eventos/listeners |
| Jobs + sync | Depurar procesamiento asíncrono ejecutándolo de forma sincrónica |
| Cliente HTTP | Registro y comprobación de comunicaciones con APIs externas |
Guía de Laravel Telescope
Para los detalles de instalación y configuración de los watchers, consulta la página de la guía.
Laravel Nightwatch
Para la monitorización en producción, usa Nightwatch.