Herramientas de usuario

Herramientas del sitio


fw:log4j

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
fw:log4j [2008/10/13 18:32]
alfred
fw:log4j [2020/05/09 09:25] (actual)
Línea 2: Línea 2:
 Herramienta para el registro de datos\sucesos en el código (logs) de forma secuencial en [[highlevel:​java|Java]]. Herramienta para el registro de datos\sucesos en el código (logs) de forma secuencial en [[highlevel:​java|Java]].
 ===== Loggers, appenders y layouts ===== ===== Loggers, appenders y layouts =====
 +
 +
 +
 +
 +
  
  
Línea 9: Línea 14:
 ==== Loggers ==== ==== Loggers ====
 Permiten activar y desactivar ciertas sentencias de log. Se gestionan en una relación padre-hijo a partir de un nombre separado por puntos, donde el padre es el elemento anterior al otro. Por ejemplo ''​com.foo''​ es padre de ''​com.foo.bar''​. \\  Permiten activar y desactivar ciertas sentencias de log. Se gestionan en una relación padre-hijo a partir de un nombre separado por puntos, donde el padre es el elemento anterior al otro. Por ejemplo ''​com.foo''​ es padre de ''​com.foo.bar''​. \\ 
-Siempre existirá el logger root (al cual no puede accederse por el nombre). Para utilizarlo llamaremos al método estático **''​Logger.getRootLogger''​** (para llamar a otro utilizaremos **''​Logger.getLogger''​**). +Siempre existirá el logger root (al cual no puede accederse por el nombre). Para utilizarlo llamaremos al método estático **''​Logger.getRootLogger''​** (para llamar a otro utilizaremos **''​Logger.getLogger''​**). ​\\ 
- +
-=== Métodos de un Logger === +
-  * **public void [nivel] (Object message)**, pudiendo ser nivel ''​debug'',​ ''​info''​ warn'',​ ''​error'',​ ''​fatal''​ o ''​log'';​ son métodos que imprimen en un nivel concreto de un logger. Por ejemplo si ''​objLog''​ es un objeto de la clase ''​Logger''​ llamando a su método ''​objLog.info("​..."​)''​ enviará una petición de loggin a nivel de ''​INFO''​. +
-  * **public void log(Level l, Object message)**, método genérico para imprimir.+
  
-=== Niveles ===+Los métodos que utilizaremos generalmente serán:  
 +  * **public void [nivel] (Object message)**, pudiendo ser nivel ''​debug'',​ ''​info'',​ ''​warn'',​ ''​error'',​ ''​fatal''​ o ''​log'';​ son métodos que imprimen en un nivel concreto de un logger. Por ejemplo si ''​objLog''​ es un objeto de la clase ''​Logger''​ llamando a su método ''​objLog.info("​..."​)''​ enviará una petición de loggin a nivel de ''​INFO''​. 
 +  * **public void log(Level l, Object message)**, método genérico para imprimir a partir de un nivel indicado.
 Los niveles que pueden asignarse a un logger son ''​DEBUG'',​ ''​INFO'',​ ''​WARN'',​ ''​ERROR''​ y ''​FATAL''​ definidos en la clase ''​org.apache.log4j.Level''​. Si no se llega a asignar un nivel a un logger entonces lo heredará de su antecesor. \\  Los niveles que pueden asignarse a un logger son ''​DEBUG'',​ ''​INFO'',​ ''​WARN'',​ ''​ERROR''​ y ''​FATAL''​ definidos en la clase ''​org.apache.log4j.Level''​. Si no se llega a asignar un nivel a un logger entonces lo heredará de su antecesor. \\ 
  
Línea 38: Línea 41:
 | X.Y | ninguno | Px | | X.Y | ninguno | Px |
 | X.Y.Z | Pxyz | Pxyz | | X.Y.Z | Pxyz | Pxyz |
 +Una petición de log estará abilitada si en el logger en el que se realiza tiene un nivel superior a otro ya abilitado. El orden de los niveles es el siguiente: ''​DEBUG < INFO < WARN < ERROR < FATAL''​. \\ 
 +Al hacer ''​Logger x = Logger.getLogger("​wombat"​);''​ y ''​Logger y = Logger.getLogger("​wombat"​);''​ los objetos ''​x''​ e ''​y''​ de la clase logger tendrá la misma instancia, por lo que no nos tenemos que preocupar de pasar el objeto entre métodos de código.
 +
  
 ==== Appenders ==== ==== Appenders ====
 +Un appender es un destino donde se puede mostrar el log (consola, ficheros, componentes GUI, socket (para acceder a un servidor remoto)...). \\ 
 +Un logger puede tener asociado más de un appender. \\ 
 +De la misma forma que en la activación de un logger influye los loggers "​padre"​ en la adición de appenders ocurre lo mismo. Es decir, si un appender de consola es asignado al root todos los logs imprimirán por consola. Aun así cambiar esto llamando a ''​setAdditivity''​ con false. \\ 
 +El método ''​addAppender''​ es el que asigna un appender a un logger.
 +
  
 ==== Layouts ==== ==== Layouts ====
 +Los layouts (PatternLayout) son el formato que tendrá el logger. Se asignan como si escribiesemos un printf de C, del estilo "''​%r [%t] %-5p %c - %m%n''"​. Y podemos escribir:
 +  * %r : El número de milisegundos que han pasado desde que se inició el programa.
 +  * %t : El thread que lo ha llamado.
 +  * %-5p : El nivel de sentencia.
 +  * %c : El nombre del log.
 +  * %m : El mensaje con el que se ha llamado.
 +
 +
 +
 +
 +
 +===== Configuración =====
 +Podemos indicar como queremos configurar log4j mediante el método **configure** las clases **PropertyConfigurator** y **BasicConfigurator**. Mediante BasicConfigurator indicamos que se configure de forma standard: un logger root con nivel DEBUG y un ConsoleAppender,​ el formato de salida será el siguiente ''​%-4r [%t] %-5p %c %x - %m%n''​. PropertyConfigurator nos permite indicar un archivo externo donde guardar la configuración,​ el formato de este será como el que sigue:
 +<​code>​
 +# Set root logger level to DEBUG and its only appender to A1.
 +log4j.rootLogger=DEBUG,​ A1
 +# A1 is set to be a ConsoleAppender.
 +log4j.appender.A1=org.apache.log4j.ConsoleAppender
 +
 +# A1 uses PatternLayout.
 +log4j.appender.A1.layout=org.apache.log4j.PatternLayout
 +log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
 +</​code>​
 +También podremos indicar la configuración mediante un formato xml.
  
fw/log4j.1223922752.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)