Logging contextual en PHP: reemplaza var_dump() por Monolog

Resumen: Deja de usar var_dump() en tus aplicaciones PHP. Implementa logging contextual para obtener registros estructurados, trazas y mejor diagnóstico.

Este artículo explica por qué el logging contextual es superior, qué herramientas usar y cómo instrumentar Monolog con ejemplos prácticos.

Introducción

var_dump() muestra datos, pero no el contexto ni la intención detrás de un evento. En aplicaciones modernas eso crea ruido y dificulta el diagnóstico.

El objetivo del logging contextual es convertir cada registro en una unidad de información accionable: quién, qué, dónde y bajo qué condiciones.

Prerrequisitos

Asumo que puedes instalar paquetes con Composer. Necesitarás Monolog y acceso a la capa donde se almacenan o envían los logs (archivos, agregadores, etc.).

Desarrollo

Procedimiento

  1. Crear y configurar un Logger central.
  2. Añadir handlers y processors que inyecten contexto (ID de correlación, ubicación, introspección).
  3. Emitir logs estructurados (preferible JSON) con campos relevantes.

Ejemplo mínimo de configuración con Monolog (stream handler y processors):

<?php
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Monolog\Processor\UidProcessor;
use Monolog\Processor\IntrospectionProcessor;

// Create logger
$logger = new Logger('app');
$logger->pushHandler(new StreamHandler(__DIR__.'/logs/app.log', Logger::DEBUG));
$logger->pushProcessor(new UidProcessor());
$logger->pushProcessor(new IntrospectionProcessor());

// Contextual log
$logger->info('User action', [
    'user_id' => 213,
    'action' => 'update_order',
    'environment' => getenv('APP_ENV'),
]);
Lenguaje del código: PHP (php)

Con esta configuración obtendrás registros con identificador único y referencia de pila, lo que facilita agrupar eventos y localizar código.

Ejemplos

Ejemplo de log estructurado en JSON (concepto):

{
  "timestamp": "2025-10-12T12:34:56Z",
  "level": "info",
  "message": "User action",
  "context": {
    "user_id": 213,
    "action": "update_order",
    "environment": "staging",
    "correlation_id": "5f8e3b7a"
  }
}
Lenguaje del código: JSON / JSON con comentarios (json)

Comportamientos recomendados a implementar:

  • Añadir correlation IDs en cabeceras y logs para trazar flujos distribuidos.
  • Emitir campos de negocio (user_id, tenant, region) en cada evento relevante.
  • Usar niveles dinámicos y enviar alertas según impacto.
export APP_ENV=staging
tail -f logs/app.log | jq .
Lenguaje del código: Bash (bash)

Checklist

  • Eliminar var_dump() y print_r() del código en producción.
  • Registrar contexto mínimo: user_id, request_id/correlation_id, environment.
  • Enviar logs estructurados a un agregador o almacenarlos en formato JSON.
  • Configurar niveles y alertas basadas en impacto.

Conclusión

Pasar de var_dump() a logging contextual reduce ruido, acelera el diagnóstico y permite analizar el comportamiento de la aplicación en producción.

Empieza por instrumentar Monolog, añadir processors relevantes y normalizar la salida en JSON para integrarla con tus herramientas de observabilidad.

Comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *