Registro de Java

En este tutorial, aprenderemos sobre Java Logging y sus diversos componentes con la ayuda de ejemplos.

Java nos permite crear y capturar mensajes y archivos de registro a través del proceso de registro.

En Java, el registro requiere marcos y API. Java tiene un marco de registro incorporado en el java.util.loggingpaquete.

También podemos utilizar marcos de terceros como Log4j, Logback y muchos más para fines de registro.

Componentes de registro de Java

La siguiente figura representa los componentes principales y el flujo de control de la API de registro de Java ( java.util.logging).

Registro de Java

1. Registrador

La Loggerclase proporciona métodos para el registro. Podemos instanciar objetos de la Loggerclase y llamar a sus métodos con fines de registro.

Pongamos un ejemplo.

 Logger logger = Logger.getLogger("newLoggerName"); 

El getLogger()método de la Loggerclase se utiliza para buscar o crear un nuevo Logger. El argumento de cadena define el nombre del registrador.

Aquí, esto crea un nuevo Loggerobjeto o devuelve uno existente Loggercon el mismo nombre.

Es una convención definir a Loggerdespués de la clase actual usando class.getName().

 Logger logger = Logger.getLogger(MyClass.class.getName()); 

Nota: Este método arrojará NullPointerExceptionsi el nombre pasado es null.

Cada uno Loggertiene un nivel que determina la importancia del mensaje de registro. Hay 7 niveles de registro básicos:

Nivel de registro (en orden descendente) Utilizar
GRAVE grave fracaso
ADVERTENCIA mensaje de advertencia, un problema potencial
INFO información general de tiempo de ejecución
CONFIG información de configuración
MULTA información general del desarrollador (mensajes de seguimiento)
Más fino información detallada del desarrollador (mensajes de seguimiento)
MEJOR información muy detallada del desarrollador (mensajes de seguimiento)
APAGADO desactivar el registro para todos los niveles (no capturar nada)
TODOS activar el registro para todos los niveles (capturar todo)

Cada nivel de registro tiene un valor entero que determina su gravedad a excepción de dos niveles de registro especiales OFFy ALL.

Registrando el mensaje

De forma predeterminada, los tres niveles de registro superiores siempre se registran. Para establecer un nivel diferente, podemos usar el siguiente código:

 logger.setLevel(Level.LogLevel); // example logger.setLevel(Level.FINE); 

En este ejemplo, solo el nivel FINEy los niveles superiores están configurados para registrarse. Todos los demás mensajes de registro se eliminan.

Ahora, para registrar un mensaje, usamos el log()método.

 logger.log(Level.LogLevel, "log message"); // example logger.log(Level.INFO, "This is INFO log level message"); 

Existen métodos abreviados para registrar en los niveles deseados.

 logger.info( "This is INFO log level message"); logger.warning( "This is WARNING log level message"); 

Todas las solicitudes de registro que hayan pasado el nivel de registro establecido se reenvían al LogRecord .

Nota: Si el nivel de un registrador está configurado en null, su nivel se hereda de su padre y así sucesivamente en el árbol.

2. Filtros

Un filtro (si está presente) determina si el LogRecord debe reenviarse o no. Como sugiere el nombre, filtra los mensajes de registro según criterios específicos.

Un LogRecord solo se pasa del registrador al controlador de registros y del controlador de registros a sistemas externos si pasa los criterios especificados.

 // set a filter logger.setFilter(filter); // get a filter Filter filter = logger.getFilter(); 

3. Manipuladores (anexos)

El administrador de registros o los añadidos reciben el LogRecord y lo exportan a varios destinos.

Java SE proporciona 5 controladores integrados:

Manipuladores Utilizar
StreamHandler escribe a un OutputStream
ConsoleHandler escribe en la consola
FileHandler escribe en el archivo
SocketHandler escribe en puertos TCP remotos
MemoryHandler escribe en la memoria

Un controlador puede pasar el LogRecord a un filtro para determinar nuevamente si se puede reenviar a sistemas externos o no.

Para agregar un nuevo controlador, usamos el siguiente código:

 logger.addHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); 

Para eliminar un controlador, usamos el siguiente código:

 logger.removeHandler(handler); // example Handler handler = new ConsoleHandler(); logger.addHandler(handler); logger.removeHandler(handler); 

Un registrador puede tener varios controladores. Para obtener todos los controladores, usamos el siguiente código:

 Handler() handlers = logger.getHandlers(); 

4. Formateadores

Un controlador también puede usar un formateador para formatear el objeto LogRecord en una cadena antes de exportarlo a sistemas externos.

Java SE tiene dos formateadores integrados :

Formateadores Utilizar
SimpleFormatter formatos LogRecord de cadena
XMLFormatter formatos LogRecord de forma XML

Podemos usar el siguiente código para formatear un controlador:

 // formats to string form handler.setFormatter(new SimpleFormatter()); // formats to XML form handler.setFormatter(new XMLFormatter()); 

LogManager

El objeto LogManager realiza un seguimiento de la información de registro global. Lee y mantiene la configuración de registro y las instancias del registrador.

El administrador de registros es un singleton, lo que significa que solo se crea una instancia de él.

Para obtener la instancia del administrador de registros, usamos el siguiente código:

 LogManager manager = new LogManager(); 

Ventajas de la tala

Estas son algunas de las ventajas de iniciar sesión en Java.

  • ayuda a monitorear el flujo del programa
  • ayuda a capturar cualquier error que pueda ocurrir
  • proporciona soporte para el diagnóstico y la depuración de problemas

Articulos interesantes...