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.