- OFF: no se muestra en ningún mensaje (se encuentra apagado)
- FATAL: para mostrar mensajes de situaciones que probablemente harán abortar la aplicación
- ERROR: para mostrar mensajes de errores que no son deseados pero que no interrumpirán la aplicación.
- WARN: para mostrar mensajes de contextos peligrosos para la aplicación, o ciertas operaciones de uso no recomendado
- INFO: para mostrar mensajes de información sobre la ejecución de la aplicación, o eventos importantes dentro de la misma
- DEBUG: para mostrar mensajes interesantes para depurar la aplicación. Para la etapa de desarrollo.
- ALL: se muestra en todos los casos
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration
xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="Fichero"
class="org.apache.log4j.FileAppender">
<param name="File" value="A1.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%t %-5p %c{2} - %m%n"/>
</layout>
</appender>
<appender name="Consola"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d %-5p [%t] %C{2} (%F:%L) - %m%n"/>
</layout>
</appender>
<root>
<priority value ="debug"/>
<appender-ref ref="Consola"/>
<appender-ref ref="Fichero "/>
</root>
</log4j:configuration>
Explicando un poco el archivo de configuración XML:- La linea con DOCTYPE indica cual es el archivo DTD para validar la sintaxis de este archivo de configuración; el log4j.dtd lo encuentras en el paquete org.apache.log4j.xml de la librería log4j-1.2.x .jar. Basta con colocarlo en el classpath o la misma ruta donde se ubica el archivo XML de configuración de log4j.
- El tag appender indica un destino para el log, en este caso tenemos a FileAppender (un archivo) que indica como parámetro 'File' el nombre del archivo y ConsoleAppender (la consola), aunque existe una lista mas amplia de appenders :
- AppenderSkeleton, AsyncAppender, DailyRollingFileAppender, ExternallyRolledFileAppender, JDBCAppender, JMSAppender, LF5Appender, NTEventLogAppender, NullAppender, RollingFileAppender, SMTPAppender, SocketAppender, SocketHubAppender, SyslogAppender, TelnetAppender, WriterAppender
- El tag layout de cada appender define el formato de la linea que se va a trazar, puede incluir fecha, hora, clase ejecutada con o sin paquete, numero de linea que traza dentro de la clase, mensaje, etc. De acuerdo al layout utilizado, los cuales pueden ser: DateLayout, HTMLLayout, SimpleLayout, XMLLayout.
- El más robusto a mi parecer es PatternLayout, el cual utiliza su propiedad 'conversionPattern' para definir el formato de salida en forma de patrones.
- Ejemplo General: "%t %-5p %c{2} - %m%n" - muestra el nivel de debug, la clase que la ejecuta, un guión, el mensaje (%m) y un salto de linea
- Cada patrón tiene un formato de conversión: %[alineaciónIzq][anchoMínimo][.][anchoMáximo]c, esto define que al texto al que el patrón 'c' se refiere, se le puede otorgar un ancho mínimo y/o máximo (con numero y el punto es solo para diferenciarlo en caso de venir ambos límites), también permite alinear a la izquierda con un signo '-' (menos), si no existe es a la derecha. El '%' da inicio al patrón.
- Ejemplo 2: %20.30m esto quiere decir que el mensaje tendrá como un mínimo 20 caracteres, máximo 30 y sera alineado a la derecha
- Ejemplo 3: %-5p indica que mostrara la prioridad en un mínimo de 5 caracteres alineados a la izquierda
- La lista de patrones esta en la tabla 'Conversion Character' de la pagina PatternLayout, pero algunos de ellos son: c(categoria del evento que traza), C(fully qualified class name), d(formato fecha), F(nombre del archivo que traza), l(fully qualified name of the calling method), L(# linea de la case donde se traza), m(mensaje), M, n(salto de linea), p(prioridad), r, t (nombre del hilo), x, X y %.
- El tag root define que para todo el sistema se harán trazas hacia los destinos definidos por el tag appender-ref. Aunque en este caso, se escriben para todo el sistema en la consola y en el archivo, lo correcto es definir por paquetes o clases el nivel de trazo.
org.apache.log4j.xml.DOMConfigurator.configure("ruta_al_archivo\\log4j.xml");
En mi caso el metodo main viene asi:
public static void main( String[] args ) { DOMConfigurator.configure("src\\main\\resources\\log4j.xml"); log.debug("## -> Prueba :: [" + pruebaService.getClass() + ']'); pruebaService.ejecutar(); log.debug("## <- Prueba :: [" + pruebaService.getClass() + ']'); }
Referencias:
No hay comentarios:
Publicar un comentario
Que opinas sobre esta publicación?