PHP: Guardar archivo de logs en bases de datos, enviarlo por email y más

Siempre me resulto curioso el poco uso que le dan la mayoría de los programadores a los archivos de logs, siendo estos una de las mejores herramientas para detectar problemas, permitiendo detectar fallas que de otra forma serian muy difíciles de encontrar.

PHP reporta los problemas por medio de archivos de logs de una manera muy fiable, en mi caso siempre que tengo un problema difícil de solucionar recurro a ellos, eso si, previamente activo desde la configuración que se guarde la mayor cantidad de información y no solo los errores, parece mentira pero muchas veces los warning nos brindan una ayuda tremenda.

Algo que siempre me pareció engorroso es la manipulación de los archivos de logs, en mi caso casi siempre utilizo la terminal, sin embargo hay otra alternativa y es la que provee el proyecto Monolog.

logs php

Monolog es un sistema de manipulación de archivos de logs creado para PHP versión 5.3 o superior, su principal virtud es la de brindarnos muchas opciones a la hora de tratar estos archivos, teniendo entre ellas:

  • Enviar logs directamente a nuestro correo electrónico.
  • Guardarlos en una base de datos.
  • Transportarlos mediante el uso de Sockets.

Por ejemplo, si deseamos guardar los logs en una base de datos podemos configurar Monolog para que lo haga de forma automática. El proyecto nos brinda todos los conectores necesarios para enlazar nuestros logs con las BD más populares: Redis, CouchDB, MongoDB, etc.

Si los archivos de logs no son demasiado pesados una solución sencilla seria la de utilizar directamente un correo electrónico, para enviar los logs el proyecto nos da la posibilidad de seleccionar que sistema de mailer queremos utilizar, entre sus opciones esta la de emplear directamente la función de PHP Mail(); o bien Swift_Mailer.

Como curiosidad también tenemos la opción de enviar los logs a nuestros teléfonos móviles mediante el uso de Pushover y también a una sala de chat mediante el API de HipChat.

Monolog soporta los niveles de logging definidos en la RFC 5424. Configurar los distintos niveles es fundamental si no queremos sobrecargar nuestros sistemas guardando información innecesaria. Les recomiendo utilizar el nivel de ERROR (400), es el nivel que considero de partida para comenzar un análisis, luego pueden ir incrementando el nivel de log para asegurarse que todo funciona bien.

Por si fuera poco, Monolog tiene la capacidad de integrarse con la mayoría de los Frameworks PHP más populares: Laravel 4, Symfony 2, CakePHP, Slim y varios más.

Si necesitan personalizar las salidas pueden recurrir a la herramienta de formateo que viene con este recurso, mediante su utilización pueden decidir el formato en que los logs se guardan, por ejemplo pueden convertir los archivos a formato JSON para una sencilla manipulación.

Monolog es una excelente alternativa para aquellos programadores que busquen sacarle el jugo a los archivos de logs, cuenta con una muy buena documentación y soporte, todo esto sin pagar un solo dolar cortesía de Jordi Boggiano, autor de este proyecto que decidió liberarlo bajo licencia MIT para su uso libre.

Categorizado en: