Logging en PHP Monolog

Written by

Monolog es una librería de logging escrita en PHP inspirada en la similar herramienta LogBook escrita en Python. Requiere PHP5.3 o superior. Y lo que mas me gusta es que es muy fácil de utilizar. Existen seis niveles: debug, info, warning, error, critical, alert.

Para instalar la librería puedes bajártela en Formato Comprimido ZIP o utilizar GIT, método este que recomiendo:

$ git clone https://github.com/Seldaek/monolog.git

Tambien existe la posibilidad de descargarlo utilizando sistema de paquetes PHP como Pear:

$ pear install pearhub/Monolog

O en por medio de Composer: http://packagist.org/packages/monolog/monolog

Utilizar la librería es muy sencillo; simplemente se instancia un objeto Logger y utilizando el método pushHandler añadimos un nuevo handler a nuestro sistema logeador, donde el primer parámetro es el handler que queremos utilizar, y el segundo el nivel que utilizaremos como pivote para escribir los mensajes de log.

<php

use MonologLogger;
use MonologHandlerStreamHandler;

$log = new Logger("MiLogger");
$log->pushHandler(new StreamHandler("/home/tuuser/logs/tuapp.log", Logger::DEBUG));

$log->addDebug("Esto es un mensaje de DEBUG");
$log->addInfo("Esto es un mensaje de INFO");
$log->addWarning("Esto es un mensaje de WARNING");
$log->addError("Esto es un mensaje de ERROR");
$log->addCritical("Esto es un mensaje de CRITICAL");
$log->addAlert("Esto es un mensaje de ALERT");

Monolog puede gestionar los logs de varias maneras; pues posee varios handlers:

  • _StreamHandler_: Guardar streams de datos. Es la típica opción para guardar logs en ficheros.
  • _RotatingFileHandler_: Logs rotativos, un fichero por día.
  • _FirePHPHandler_: Como su nombre indica, para tratar los logs desde la extensión FirePHP del navegador Firefox.
  • _ChromePHPHandler_: Igual que el anterior pero para el navegador Chrome.
  • _MongoDBHandler_: Logs en base de datos, en este caso escribe en MongoDB, por medio de la extensión de mongo de PHP.
  • _NativeMailHandler_: Logs por email utilizando la función mail() de PHP.
  • _SwiftMailerHandler_: Igual que el anterior pero utilizando la librería SwiftMailer.
  • _SyslogHandler_: Escribe los mensaje en el log del sistema.
  • _GelfHandler_: Con este handler podemos conectarlo con el servidor de logs [graylog2](http://www.graylog2.org "graylog2").
  • _SocketHandler_: Utiliza sockets UNIX. Aparte existen varios handlers mas, puedes encontrar información sobre ellos en la documentación del proyecto: [Documentación Monolog](https://github.com/Seldaek/monolog#readme "monolog")

Tambien existe la posibilidad de darle formato a los mensajes de logs; existiendo varios formateadores como: _LineFormatter_, _NormalizerFormatter_, _JsonFormatter_, etc.. En la documentación se puede aprender mas sobre cada uno de ellos.