Espera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos:
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 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 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.
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.
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:
Para crear un alerta indicamos:
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'],
],
// ...
],
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.
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.
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 hecho hicimos pruebas, y recibimos este alerta por correo electrónico:
Comparte este post si te fue de ayuda 🙂.
Regístrate
Accede a todos los cursos, y resuelve todas tus dudas.
Cursos Recomendados
Aprende Laravel desde cero y desarrolla aplicaciones web reales, en tiempo récord, de la mano de Laravel.
Iniciar cursoActualiza tus proyectos desde cualquier versión hasta la última versión estable de Laravel.
Iniciar cursoDesarrollemos un Messenger! Aprende sobre Channels, Queues, Vuex, JWT, Sesiones, BootstrapVue y mucho más.
Iniciar cursoEspera un momento ...
¿Te gustaría llevar mi curso de Laravel, gratis?
Sólo debes ingresar tus datos: