martes, 6 de marzo de 2012

Tecnología de log de java

Explicaré como usar el API de logging que viene por incluido en el entorno de desarrollo de Java.

Como indicaba el entorno de desarrollo, JDK, contiene el API de logging de java. A través del logger se puede enviar el texto que queremos anotar o bien a un determinado fichero, a la consola, etc.. El API de logging permite configurar la manera en que estos mensajes son anotados, se pueden distinguir distintas categorías o prioridades (severe, warning, info, config, fine, finer, finest), se pueden formatear de distintas formas, sobre que clase(s) queremos anotar información, etc...

Los pasos a seguir son

a) Crear un Logger.
b) Seleccionar el nivel de anotación.
c) Seleccionar el Manejador.
d) Formato de los mensajes.

a) Crear un logger

Crear un logger es sencillo, ya que solamente tenemos que utilizar la clase Logger del paquete java.util.logging de la siguiente manera:

import java.util.logging.Logger;

private final static Logger MyLogger= Logger.getLogger( MyClass.class.getName() );

b) Nivel de anotación

Tenemos los siguientes niveles de anotación, de menor a mayor importancia:

FINEST
FINER
FINE
CONFIG
INFO
WARNING
SEVERE

Con esto podemos decidir con qué nivel de importancia damos a los mensajes que queremos
anotar. El funcionamiento de las anotaciones es entonces el siguiente:

i) En tiempo de desarrollo determinamos la importancia de las anotaciones que queremos sacar, o bien por consola o bien por fichero.
ii) Durante la ejecución se puede gestionar el nivel mínimo que vamos a querer anotar. A partir de el nivel seleccionado todos los mensajes serán anotados.

Además de los niveles mencionados se puede establecer el nivel ALL, que anota todo, y OFF, que no anotará nada.

c) Selección del Manejador

Una vez creado el logger, podemos asignar tantos manejadores (handlers) como necesitemos para nuestros propósitos.

Así pues, cada manejador (handler) recibe los mensajes que debe anotar y los muestra en el destino que hayamos elegido.

Por defecto existen dos manejadores:

i) Consola: escribe el mensaje en la consola. ConsoleHandler.
ii) Fichero: escribe el mensaje en un fichero. FileHandler.


d) Formato de los mensajes

El formato de los mensajes a anotar, se aplica mediante el uso de un formateador a la salida de cada handler.

Hay dos clases que nos ayudan a dar formato a los mensajes:

i) SimpleFormatter: nos ayuda a generar mensajes de log como texto.
ii) XMLFormatter: nos ayuda a generar mensajes de log en formato XML.

Estas dos clases se pueden extender y generar nuestros propios formateadores.

Yendo directamente a ver un ejemplo de código:

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

public class TestingLogger {

private final static Logger myLogger= Logger.getLogger( TestingLogger.class.getName() );

public static void main(String[] args) throws SecurityException, IOException {
myLogger.setLevel(Level.INFO);

// Crear un manejador de dispositvo de logging.
FileHandler fileTxt = new FileHandler("Anotaciones.txt");

// Crear un formateador de tipo SimpleFormatter
SimpleFormatter formatterTxt = new SimpleFormatter();
fileTxt.setFormatter(formatterTxt);
myLogger.addHandler(fileTxt);

myLogger.severe("Anotacion Severe");
myLogger.warning("Anotacion Warning");
myLogger.info("Anotacion Info");
myLogger.finest("Anotacion Finest");

myLogger.info("------------ Cambio de Nivel ------");

myLogger.setLevel(Level.SEVERE);

myLogger.severe("Anotacion Severe");
myLogger.warning("Anotacion Warning");
myLogger.info("Anotacion Info");
myLogger.finest("Anotacion Finest");
}

}



Y la correspondiente salida obtenida:

01-ene-2012 13:43:54 com.blog.TestingLogger main
GRAVE: Anotacion Severe
01-ene-2012 13:43:54 com.blog.TestingLogger main
ADVERTENCIA: Anotacion Warning
01-ene-2012 13:43:54 com.blog.TestingLogger main
INFO: Anotacion Info
01-ene-2012 13:43:54 com.blog.TestingLogger main
INFO: ------------ Cambio de Nivel ------
01-ene-2012 13:43:54 com.blog.TestingLogger main
GRAVE: Anotacion Severe

Observamos como afecta el cambio de nivel de logging en los mensajes obtenidos en el fichero Anotaciones.txt

No hay comentarios:

Publicar un comentario