Log4j

Log4j
Información sobre la plantilla
Osgi-log4j-3.png
icono de la aplicación
DesarrolladorApache Software Foundation
Última versión estable1.2.16 6 de abril de 2010; hace 1 año
Géneroherramienta de registro
Sistemas Operativos compatiblesmultiplataforma
Idiomainglés
Licencialicencia Apache 2.0
Sitio web
http://logging.apache.org/log4j

Log4j es un framework de Java que se utiliza como herramienta de logging. Muchas veces se utiliza el limitado pero efectivo System.out.printl para realizar salidas por consola o hacer seguimiento de un error. La configuración de salida y granularidad de los mensajes es realizada a tiempo de ejecución mediante el uso de archivos de configuración externos. Log4J ha sido implementado en otros lenguajes como: C, C++, C#, Perl, Python, Ruby y Eiffel.


Historia

Log4j es un proyecto de la Apache Software Foundation que fue escrito por Ceki Gülcü. Log4j es uno de los varios Java Logging Frameworks existentes. Gülcü ha comenzado los proyectos SLF4J y Logback, con la intención de ofrecer un sucesor a log4j.

Niveles de prioridad

Log4j tiene tres components principales para configurar: loggers, appenders y layouts . Estos tres funcionan juntos para loggear de acuerdo al tipo de mensaje y formato. Cuando se escribe un mensaje para que vaya al log se debe especificar su nivel de prioridad. Por defecto Log4J tiene 6 niveles de prioridad para los mensajes (trace, debug, info, warn, error, fatal). Además existen otros dos niveles extras (all y off). Niveles de prioridad (De mayor -poco detalle- a menor -mucho detalle-): FATAL: se utiliza para mensajes críticos del sistema, generalmente después de guardar el mensaje el programa abortará. ERROR: se utiliza en mensajes de error de la aplicación que se desea guardar, estos eventos afectan al programa pero lo dejan seguir funcionando, como por ejemplo que algún parámetro de configuración no es correcto y se carga el parámetro por defecto. WARN: se utiliza para mensajes de alerta sobre eventos que se desea mantener constancia, pero que no afectan al correcto funcionamiento del programa. INFO: se utiliza para mensajes informativos sobre el avance de la aplicación. Estimo que deb ser el más utilizado de todos los niveles. DEBUG: se utiliza para escribir mensajes de depuración. Este nivel no debe estar activado cuando la aplicación se encuentre en producción. TRACE: se utiliza para mostrar mensajes con un mayor nivel de detalle que debug. Extras: ALL: este es el nivel de máximo detalle, habilita todos los logs (en general equivale a TRACE). OFF: este es el nivel de mínimo detalle, deshabilita todos los logs. Por lo general, INFO y DEBUG son los utilizados.

Appenders.

En Log4J los mensajes son enviados a una (o varias) salida de destino, lo que se denomina un appender. Existen varios appenders y tambiénse pueden crear propios . Típicamente la salida de los mensajes es redirigida a un fichero de texto .log (FileAppender, RollingFileAppender), a un servidor remoto donde almacena registros (SocketAppender), a una dirección de correo electrónico (SMTPAppender), e incluso en una base de datos (JDBCAppender). Casi nunca es utilizado en un entorno de producción la salida a la consola (ConsoleAppender) ya que perdería gran parte de la utilidad de Log4J.

Layouts

Es el responsable de dar un formato de presentación a los mensajes. Permite presentar el mensaje con el formato necesario para almacenarlo simplemente en un archivo de texto .log (SimpleLayout y PatternLayout), en una tabla HTML (HTMLLayout), o en un archivo XML (XMLLayout). Además podemos añadir información extra al mensaje, como la fecha en que se generó, la clase que lo generó, el nivel que posee, etc. Inclusive se pueden crear layouts propios. Basta con heredar de la clase org.apache.log4j.Layout. Los layouts que vienen con el PI son: DateLayout, HTMLLayout, PatternLayout, SimpleLayout, XMLLayout.

Configuración y uso

La API es totalmente configurable, ya que se realiza mediante un archivo en formato XML o en formato Java Properties (clave=valor), generalmente llamado log4j.properties. En el siguiente ejemplo se implementa un fichero properties de configuración, y se configuran dos registros. CONSOLE imprime los mensajes en la consola por líneas (%m%n). LOGFILE añadirá (append) los mensajes a un fichero (aplicación.log), reservando los primeros 4 caracteres para los milisegundos en que se generó el mensaje (%-4r), entre corchetes quién generó el mensaje ( [%t]), cinco espacios para la prioridad del mensaje (%-5p), la categoría del mensaje (%c) y finalmente el propio mensaje junto con un retorno de carro (%m%n).

Para utilizarlo debe importar las clases que se necesitan de Log4J del código. A continuación se define una variable estática del tipo org.apache.log4j.Logger con el nombre de la clase que va a escribir en el registro. Finalmente se debe configurar el objeto Logger. Se puede utilizar la configuración básica, se invoca el método org.apache.log4j.BasicConfigurator.configure que configura el registro como un ConsoleAppender y un PatternLayout también predefinido. Se puede configurar la API del Log4J también en el mismo código. Se puede leer la configuración del fichero log4j.properties, donde se define el nivel mínimo que debe poseer la traza para ser almacenada en el registro, el o los appenders que q se utilizará, y sus correspondientes layouts. Por defecto al instanciar un Logger Log4J busca en la raíz del classpath de la aplicación un fichero llamado log4j.properties para configurarse.


Fuentes