¿Qué es Monolog y para qué sirve?
\n\nMonolog es una biblioteca estándar para el registro de logs en PHP. Proporciona un conjunto de herramientas flexible y potente para escribir logs en varios canales (archivos, bases de datos, correo electrónico, registro del sistema, servicios externos, etc.). Monolog es el estándar de facto para aplicaciones PHP, especialmente en el ecosistema de Symfony, Laravel y otros frameworks modernos.
\n\n¿Para qué sirve esta biblioteca? En cualquier aplicación es necesario rastrear eventos: errores, advertencias, mensajes informativos, información de depuración. Monolog permite:
\n- \n
- Centralizar el registro de logs — escribir logs en un formato único y desde cualquier lugar de la aplicación. \n
- Configurar canales de forma flexible — enviar errores críticos a Telegram/Slack y mensajes informativos a un archivo. \n
- Formatear mensajes — agregar fecha, nivel, contexto, traza de llamadas. \n
- Filtrar logs — procesar solo mensajes de un nivel específico. \n
- Integrarse con frameworks — en Symfony, Laravel, Yii2 se utiliza precisamente Monolog. \n
Instalación
\nMonolog se instala a través de Composer, el gestor de paquetes estándar para PHP.
\ncomposer require monolog/monolog\nSi usas PHP 8.0+, se recomienda instalar la última versión estable. Después de la instalación, aparecerán en el proyecto la carpeta vendor y el archivo composer.json con la dependencia.
Inicio rápido
\nEl ejemplo más simple: escribir un log en un archivo:
\n<?php\nrequire 'vendor/autoload.php';\n\nuse Monolog\\Logger;\nuse Monolog\\Handler\\StreamHandler;\n\n// Creamos el logger con el nombre del canal 'my_app'\n$log = new Logger('my_app');\n// Agregamos un manejador: escritura en archivo\n$log->pushHandler(new StreamHandler('app.log', Logger::WARNING));\n\n// Ahora podemos registrar logs\n$log->warning('Esto es una advertencia');\n$log->error('Esto es un error');\n\necho "Logs escritos en app.log";\n?>\nDespués de ejecutar el script, en el archivo app.log aparecerá algo como:
[2025-04-09T10:30:00.123456+00:00] my_app.WARNING: Esto es una advertencia [] []\n[2025-04-09T10:30:00.123789+00:00] my_app.ERROR: Esto es un error [] []\n\nMétodos y funciones principales
\nVeamos los métodos clave de Monolog. Todos forman parte de la clase Monolog\\Logger o clases relacionadas.
1. pushHandler(HandlerInterface $handler)
\nQué hace: Agrega un manejador (handler) a la pila. El logger puede tener varios manejadores, y cada uno recibirá todos los mensajes (si no se ha configurado un filtro).
\nParámetros:
\n- \n
$handler— objeto que implementaMonolog\\Handler\\HandlerInterface(por ejemplo,StreamHandler,FirePHPHandler,SlackHandler). \n
Ejemplo:
\n$log = new Logger('app');\n$log->pushHandler(new StreamHandler('debug.log', Logger::DEBUG));\n$log->pushHandler(new StreamHandler('errors.log', Logger::ERROR));\n// Ahora los mensajes de nivel ERROR y superiores irán a ambos archivos\n\n2. addRecord(int $level, string $message, array $context = [])
\nQué hace: Método base para escribir un log. Normalmente no se llama directamente, sino que se usan métodos envoltorio (debug(), info(), etc.).
Parámetros:
\n- \n
$level— nivel de registro (constantes:Logger::DEBUG,Logger::INFO,Logger::WARNING, etc.). \n $message— texto del mensaje. \n $context— array con datos adicionales (por ejemplo, ID de usuario, dirección IP). \n
Ejemplo:
También en la biblioteca
Parseo de HTML en TypeScript: bibliotecas, herramientas y ejemplos
Compression en JavaScript (Node.js): guía completa con ejemplos
MediatR para C# (.NET): guía completa con ejemplos
Trabajo con XML en C++: bibliotecas pugixml, TinyXML-2 y RapidXML
Autorización y autenticación en PHP: guía completa con ejemplos
Recommendations