Qué es el logging
El logging de Laravel se diseña en torno al concepto de canal. Un canal es la unidad de configuración que define adónde y cómo se escriben los logs, y puedes combinar diferentes destinos: archivos, Slack, syslog, etc. Internamente utiliza la biblioteca Monolog, lo que te permite aprovechar una amplia gama de handlers y formatters.Por defecto se usa el canal
stack, un canal padre que agrupa varios canales.Configuración
Toda la configuración de logging está enconfig/logging.php. La variable de entorno LOG_CHANNEL selecciona el canal por defecto.
Drivers de canal disponibles
Niveles de log
Laravel soporta los 8 niveles de log definidos en RFC 5424. Están ordenados de mayor a menor gravedad.
El ajuste
level del canal es el nivel mínimo que se registra.
Por ejemplo, con level en error solo se escriben los eventos de nivel error o superior (critical, alert, emergency).
Uso básico
La fachada Log
Con la fachadaIlluminate\Support\Facades\Log escribes mensajes de cada nivel.
Función helper log()
Con el helperlog() puedes escribir sin importar la fachada Log.
Añadir información de contexto
Si pasas un array de contexto junto con el mensaje, puedes registrar la información relacionada de forma agrupada.withContext() — contexto común para todo el canal
Cuando quieras adjuntar información común a todas las entradas de un canal a partir de ese momento, usawithContext().
Es adecuado para datos que quieres incluir en todos los logs, como un ID de petición.
shareContext() — contexto común para todos los canales
Mientras quewithContext() solo afecta al canal en curso, shareContext() añade contexto común a todos los canales.
Configuración de canales
El canal stack — escribir en varios canales a la vez
Con el canalstack, una única llamada de log escribe en varios canales.
debug o superior se escriben en daily (archivo) y solo los de nivel critical o superior se envían también a slack.
El canal daily — rotación de logs
El canaldaily separa los archivos por día y elimina automáticamente los antiguos.
Notificaciones de errores a Slack
Obtén una URL de Incoming Webhook de Slack y configúrala en.env.
slack en el canal stack y configuras LOG_CHANNEL=stack, recibirás notificaciones automáticamente cuando se produzcan errores.
Escribir en un canal concreto
ConLog::channel() puedes indicar explícitamente el canal de destino.
Canales bajo demanda
ConLog::build() puedes crear canales personalizados al vuelo sin definirlos en el archivo de configuración.
Es útil para pruebas o para destinos de escritura temporales.
Casos prácticos
Añadir un ID de petición con un middleware
Al añadir un mismo ID de petición a todos los logs, resulta fácil seguir el flujo de una petición concreta.1
Crea el middleware
2
Implementa el método handle()
3
Registra el middleware
Regístralo como middleware global en
bootstrap/app.php.request-id.
Registrar avisos de deprecación
Puedes registrar en el log los avisos cuando se usan funcionalidades deprecadas de PHP o Laravel..env.
Laravel Pail — monitorización de logs en tiempo real
Laravel Pail es una herramienta de desarrollo que permite ver los logs de la aplicación en tiempo real desde la terminal. A diferencia deltail estándar, está diseñada para funcionar con cualquier driver de log, incluidos Laravel Nightwatch, Sentry y Flare.
Para ejecutar Pail necesitas la extensión PCNTL de PHP.
Instalación
Uso básico
Filtrar logs
Resumen
Cómo elegir el nivel de log
Cómo elegir el nivel de log
Guía para elegir canal
Guía para elegir canal
- Entorno de desarrollo: escribir a archivo con
singleodaily. - Producción:
stackcombinandodaily(guardado en archivo) yslack(notificaciones de error). - Logs de procesos específicos: crear canales bajo demanda con
Log::build()para escribir en archivos separados. - Monitorización en tiempo real: verificar desde la terminal con
php artisan pail.
Precauciones en producción
Precauciones en producción
- Los logs
debugpueden contener información sensible. En producción se recomiendaLOG_LEVEL=erroro superior. - Rota periódicamente los archivos de log para no ocupar el disco (opción
daysdel canaldaily). - Ten en cuenta los rate limits de servicios externos como Slack. Ajusta el nivel para que solo se notifiquen los errores importantes.