Skip to main content

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á en config/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 fachada Illuminate\Support\Facades\Log escribes mensajes de cada nivel.
Ejemplo de uso en un controlador.

Función helper log()

Con el helper log() 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, usa withContext(). 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 que withContext() 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 canal stack, una única llamada de log escribe en varios canales.
Con esta configuración, todos los logs de nivel debug o superior se escriben en daily (archivo) y solo los de nivel critical o superior se envían también a slack.
En producción es recomendable configurar el nivel del canal slack en error o critical. Si envías incluso los logs poco importantes, las notificaciones se disparan y las alertas relevantes acaban perdiéndose.

El canal daily — rotación de logs

El canal daily separa los archivos por día y elimina automáticamente los antiguos.
Reducir days implica que los logs antiguos se eliminan antes. Asegura un periodo de retención suficiente para poder investigar incidencias en producción.

Notificaciones de errores a Slack

Obtén una URL de Incoming Webhook de Slack y configúrala en .env.
Si incluyes slack en el canal stack y configuras LOG_CHANNEL=stack, recibirás notificaciones automáticamente cuando se produzcan errores.

Escribir en un canal concreto

Con Log::channel() puedes indicar explícitamente el canal de destino.

Canales bajo demanda

Con Log::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.
Tras esta configuración, todos los logs incluirán automáticamente el campo request-id.

Registrar avisos de deprecación

Puedes registrar en el log los avisos cuando se usan funcionalidades deprecadas de PHP o Laravel.
Indica el canal en .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 del tail 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

  • Entorno de desarrollo: escribir a archivo con single o daily.
  • Producción: stack combinando daily (guardado en archivo) y slack (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.
  • Los logs debug pueden contener información sensible. En producción se recomienda LOG_LEVEL=error o superior.
  • Rota periódicamente los archivos de log para no ocupar el disco (opción days del canal daily).
  • Ten en cuenta los rate limits de servicios externos como Slack. Ajusta el nivel para que solo se notifiquen los errores importantes.
Última modificación el 2 de agosto de 2026