Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
fw:log4j [2008/10/13 18:40] 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 39: | 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 al abilitado. El orden de los niveles es el siguiente: ''DEBUG < INFO < WARN < ERROR < FATAL''. | + | 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. | ||