Monitorea tu proyecto con Alertas usando Papertrail

Todo funciona correctamente de manera local.

Pero de pronto los usuarios de tu proyecto empiezan a encontrar errores en producción.

Y te resulta difícil solucionarlos sin información adicional.

¿Te ha pasado?

Hoy vamos a ver cómo usar Logs y Alertas, para estar al tanto de errores en tu proyecto Laravel, y puedas solucionarlos a tiempo.

Laravel Logging

Laravel ofrece varios drivers para canales de logging.

Es decir, varias formas alternativas para escribir logs.

Entre los channel drivers más usados tenemos:

  • daily.- Driver basado en Monolog. Escribe sobre archivos, y va rotando cada día.
  • single.- Escribe sobre archivos, pero siempre sobre el mismo.
  • null.- Simplemente descarta todos los mensajes de log.
  • slack.- Permite enviar logs a un canal de Slack.
  • papertrail.- Permite enviar logs a Papertrail. A continuación veremos más sobre esto.
  • stack.- Actúa como wrapper para enviar logs a múltiples canales.

Papertrail

Papertrail es un servicio que nos permite gestionar logs de forma muy sencilla.

Enviamos nuestros logs a Papertrail y luego seremos capaces de buscar logs en base a filtros, y definir alertas.

Cómo configurar un canal de Papertrail

Para escribir logs sobre un canal de Papertrail necesitamos sólo 2 datos: host y port.

Para obtener estos datos de configuración necesitas crearte una cuenta de Papertrail.

Puedes [registrarte desde aquí] para obtener espacio de almacenamiento adicional de forma gratuita.

Configurar alertas en Papertrail

Papertrail nos permite ver los mensajes de log entrantes en tiempo real.

Sin embargo, nosotros no vamos a estar pendientes del visor de eventos todo el tiempo.

Es por eso que también podemos definir alertas en Papertrail:

Crear Alertas en Papertrail

Para crear un alerta indicamos:

  • Qué logs nos interesan (en este caso nuestra query nos alerta de error logs)
  • La frecuencia con que queremos evaluar nuestro alerta (por ejemplo, cada día, cada hora, etc)
  • La condición que disparará el alerta (si no se encontraron coincidencias, si se encontraron al menos X coincidencias)
  • Y finalmente nuestra zona horaria

Enviar logs sobre múltiples canales

Si usamos el driver stack podemos definir múltiples canales de logging.

Por ejemplo, en el videotutorial de arriba, definimos una "pila" para enviar logs a 2 canales: daily y papertrail, de la siguiente manera.

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['syslog', 'slack'],
    ],
    // ...
],

Niveles de log

Puedes escribir mensajes de log usando los siguientes métodos:

use Illuminate\Support\Facades\Log;
 
Log::emergency($message);
Log::alert($message);
Log::critical($message);
Log::error($message);
Log::warning($message);
Log::notice($message);
Log::info($message);
Log::debug($message);

Cada uno de ellos se corresponde con un log level determinado.

Información contextual

Los métodos aceptan también un segundo argumento, para agregar información contextual.

Es decir, puedes enviar un arreglo asociativo, para que al revisar logs se entienda mejor el contexto en que ocurrieron.

Por ejemplo, si falló el inicio de sesión para un usuario, nos interesará saber cuál es su id:

Log::info('User failed to login.', ['id' => $user->id]);

Si ocurre un error al procesar un pago, la información contextual sería por ejemplo, el importe a pagar, el concepto del pago (producto o servicio adquirido), a nombre de quién se hace el pago, y cuál es el id de la transacción.

Conclusión

Como puedes ver, configurar logs y alertas en un proyecto Laravel es muy sencillo.

En el video de ejemplo vemos cómo usar el driver stack, para enviar nuestros logs tanto a daily como a papertrail.

  • De esta manera nuestros mensajes son escritos en archivos de manera local,
  • y adicionalmente son enviados a Papertrail, para que nos envíe alertas en caso que sean frecuentes.

De hecho hicimos pruebas, y recibimos este alerta por correo electrónico:

Alerta de Papertrail por correo

# laravel # mail # notifications # testing # gmail

Logo de Programación y más

Comparte este post si te fue de ayuda 🙂.

Regístrate

Accede a todos los cursos, y resuelve todas tus dudas.

Cursos Recomendados

Imagen para el curso Aprende Laravel

Aprende Laravel

Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.

Iniciar curso
Imagen para el curso Laravel Upgrade

Laravel Upgrade

Actualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.

Iniciar curso
Imagen para el curso Laravel y Vue

Laravel y Vue

Desarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.

Iniciar curso

Espera un momento ...

¿Te gustaría llevar mi curso de Laravel, gratis?

Sólo debes ingresar tus datos: