Log4j

Log4j
Apache log4j
Desarrollador
Apache Software Foundation
http://logging.apache.org/log4j
Información general
Última versión estable 1.2.16
6 de abril de 2010; hace 1 año (2010-04-06)
Género herramienta de registro
Programado en Java
Sistema operativo multiplataforma
Plataforma Java
Licencia licencia Apache 2.0
Idiomas inglés
En español ?

Log4j es una biblioteca open source desarrollada en Java por la Apache Software Foundation que permite a los desarrolladores de software elegir la salida y el nivel de granularidad de los mensajes o “logs” (data logging) a tiempo de ejecución y no a tiempo de compilación como es comúnmente realizado. 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.

Contenido

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,[1] con la intención de ofrecer un sucesor a log4j.

Conceptos

Niveles de prioridad de los mensajes

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-):

  • OFF: este es el nivel de mínimo detalle, deshabilita todos los logs.
  • 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 similares al modo "verbose" en otras aplicaciones.
  • 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.
  • ALL: este es el nivel de máximo detalle, habilita todos los logs (en general equivale a TRACE).

Appenders

En Log4J los mensajes son enviados a una (o varias) salida de destino, lo que se denomina un appender.

Existen varios appenders disponibles y configurados, aunque también podemos crear y configurar nuestros propios appenders.

Típicamente la salida de los mensajes es redirigida a un fichero de texto .log (FileAppender, RollingFileAppender), a un servidor remoto donde almacenar 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... por cada paso

Configuración

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 implementamos un fichero properties de configuración, y configuramos dos registros.

  • CONSOLE imprimirá 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).
 ################################################################
 ### Configuración para LOCAL                                 ###
 ################################################################
 #log4j.rootCategory=DEBUG, LOGFILE, CONSOLE 
 
 #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 
 #log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
 #log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
 #log4j.appender.CONSOLE.layout.ConversionPattern=%-5p %c %x - %m%n 
 
 
 ################################################################
 ### Configuración para DESARROLLO, PREPRODUCCION, PRODUCCION ###
 ###   Sólo nos interesa el nivel de ERROR                     ###
 ###   No hay salida de consola                        ###
 ################################################################
 log4j.rootCategory=ERROR, diario
 
 
 ################################################################
 ### Configuración Común                                       ###
 ################################################################
 log4j.appender.LOGFILE=org.apache.log4j.DailyRollingFileAppender
 log4j.appender.LOGFILE.file=${catalina.base}/logs/aplicacion.log
 log4j.appender.LOGFILE.append=true
 log4j.appender.LOGFILE.DatePattern='.'yyyy-MM-dd
 
 log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
 log4j.appender.LOGFILE.layout.ConversionPattern=%-4r [%t] %-5p %c - %m%n

Uso

Para utilizarlo debemos por supuesto importar las clases que necesitamos de Log4J en nuestro código.

A continuación debemos definir una variable estática del tipo org.apache.log4j.Logger con el nombre de la clase que va a escribir en el registro.

Finalmente debemos configurar el objeto Logger.

  • Podemos utilizar la configuración básica, invocamos el método org.apache.log4j.BasicConfigurator.configure que configura el registro como un ConsoleAppender y un PatternLayout también predefinido.
  • Podemos configurar la API del Log4J también en el mismo código.
  • Podemos leer la configuración de nuestro fichero log4j.properties, donde definimos el nivel mínimo que debe poseer la traza para ser almacenada en el registro, el o los appenders que utilizaremos, 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.

Un ejemplo para esta última opción:

 private static org.apache.log4j.Logger registro;
                try {
                        URL url = Loader.getResource("log4j.properties");
                        PropertyConfigurator.configure(url);
                        registro = Logger.getLogger(CreaTrazas.class);
 System.out.println ("[" + url.toString() + "] Logger inicializado.");
                } catch (Exception e) {
                        BasicConfigurator.configure();
                        registro = Logger.getLogger(CreaTrazas.class);
 System.out.println ("Excepción al inicializar el log: " + e.toString());
                }

Lo más útil y flexible en los entornos empresariales reales es utilizar la última opción (archivos de configuración).

Referencias

  1. (en inglés) Sitio web de Logback

Véase también

Enlaces externos

Implementaciones


Wikimedia foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Mira otros diccionarios:

  • log4j — Maintainer Ceki Gülcü, C. Arnold Entwickler Apache Software Foundation Aktuelle Version 1.2.16 (6. April 2010) Betriebssystem plattformunabhängig …   Deutsch Wikipedia

  • Log4J — ist ein Framework zum Loggen von Anwendungsmeldungen in Java. Es wird von unzähligen Open Source als auch kommerziellen Softwareprodukten verwendet und hat sich als De facto Standard etabliert. Das Projekt wurde von Ceki Gülcü während seiner… …   Deutsch Wikipedia

  • Log4j — ist ein Framework zum Loggen von Anwendungsmeldungen in Java. Es wird von unzähligen Open Source als auch kommerziellen Softwareprodukten verwendet und hat sich als De facto Standard etabliert. Das Projekt wurde von Ceki Gülcü während seiner… …   Deutsch Wikipedia

  • Log4j — Infobox Software name = Apache log4j caption = developer = Apache Software Foundation latest release version = 1.2.15 latest release date = release date|2007|09|29 latest preview version = latest preview date = operating system = Cross platform… …   Wikipedia

  • Log4j — Apache log4j Тип Журналирование Разработчик Apache Software Foundation Написана на Java Операционная система Кроссплатформенное ПО Последняя версия 1.2.16 (6 апреля 2010) …   Википедия

  • Log4J — Apache Jakarta Jakarta est un ensemble de projets de logiciels libres, écrits en langage Java, développés par la fondation Apache de manière collaborative et consensuelle et tous publié sous licence Apache. Sous projets Les sous projets Jakarta… …   Wikipédia en Français

  • Log4net — log4j ist ein Framework zum Loggen von Anwendungsmeldungen in Java. Es wird von unzähligen Open Source als auch kommerziellen Softwareprodukten verwendet und hat sich als De facto Standard etabliert. Das Projekt wurde von Ceki Gülcü während… …   Deutsch Wikipedia

  • Java logging frameworks — multipleissues refimprove = June 2008 OR = June 2008 copyedit = June 2008Java logging frameworks are computer data logging packages for the Java platform.Logging is a common issue for most development teams. There have been several frameworks… …   Wikipedia

  • TTCC — [http://logging.apache.org/log4j/docs/api/org/apache/log4j/TTCCLayout.html TTCC] is a message format used by Log4j. TTCC is acronym for Time Thread Category Component . It uses the following pattern: %r [%t] % 5p %c %x %m WhereExample output 467… …   Wikipedia

  • Ceki Gülcü — is the founder of the log4j project and the author of [http://www.qos.ch/shop//products/log4j/log4j Manual.jsp The complete log4j manual ] . Ceki has since started the SLF4J and Logback projects, with the intention of offering a compatible… …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”