Perl/Log::Log4Perl
Módulo | Log::Log4Perl , |
---|---|
Versión | 1.29-1 |
Uso | Propósito general |
Propósito | Registro de mensajes informativos para aplicaciones |
Sumario
Referencias
- Ref: Tutorial de uso de Log::Log4perl recomendado en la documentación del paquete
- Ref: 8 useful Log::Log4perl recipes
Conceptos
El módulo Log::Log4perl permite controlar el número de mensajes de error, de diagnósticos e informativos generados por una aplicación en tres diferentes niveles:
- En un punto central del sistema (bien sea un archivo de configuración o en código de inicialización) se indica qué componentes de la aplicación (clases, funciones, ...) generan registros.
- Se puede indicar cómo de detallados serán estos registros empleando una escala de niveles y situando el componente de la aplicación en un nivel inferior o igual al deseado.
- Es posible diseñar cómo se registran dichos mensajes empleando appenders (código que modifica y transforma los mensajes) para indicar:
- Dónde van los mensajes (si se envían a la pantalla y a un archivo al mismo tiempo).
- En qué formato (escribir primero la fecha y la hora, luego el nombre del archivo que los genera, el mensaje después, ...)
Emplea el patrón Singleton por las siguientes razones:
- No polucionar ni el API ni el espacio de nombres de la aplicación transportando el objeto registrador entre las capas que la forman.
- La inicialización se puede llevar a cabo en un punto del programa, generalmente antes de generar ningún mensaje, siendo luego innecesario repetirla en otros puntos del mismo.
- Emplea la herencia en su configuración por lo se puede aislar un diseño de registro para una parte en concreto sin perturbar al resto.
Configuración
Aunque es posible emplear un hash o un texto con los valores de configuración a la hora de configurar el módulo lo más recomendable es inscribir los detalles en un archivo externo y cargarlo directamente desde allí, a menos que se pretenda añadir algún preproceso a los mensajes salientes no contemplado en ninguno de los módulos de Log::Log4perl.
Este archivo puede ser monitorizado por la propia librería que lo recargará si ve que ha sido modificado. De esta forma, sin tocar la aplicación ni otros archivos de configuración, es posible alterar en tiempo de ejecución el nivel de depuración y el destino de dichos mensajes de todo o una parte de la aplicación.
Para ello debemos usar categorías y el mecanismo de herencia entre ellas. No importa que una categoría no esté definida pues todas heredan inicialmente de la categoría raíz (root); siempre se puede granularizar su funcionamiento cambiando las disposiciones de registro (nivel y destino) más adelante.