Registro de Java
Registro de Java
En este tutorial, aprenderemos sobre el registro de Java 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.logging
paquete.
También podemos usar 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
).
1. Registrador
El Logger
La clase proporciona métodos para iniciar sesión. Podemos instanciar objetos desde el Logger
clase y llame a sus métodos para fines de registro.
Tomemos un ejemplo.
Logger logger = Logger.getLogger("newLoggerName");
El getLogger()
método del Logger
class se usa para encontrar o crear un nuevo Logger
. El argumento de cadena define el nombre del registrador.
Aquí, esto crea un nuevo Logger
objeto o devuelve un Logger
existente con el mismo nombre.
Es una convención definir un Logger
después de la clase actual usando class.getName()
.
Logger logger = Logger.getLogger(MyClass.class.getName());
NullPointerException
si el nombre pasado es null
.
Cada Logger
tiene un nivel que determina la importancia del mensaje de registro. Hay 7 niveles de registro básicos:
Nivel de registro (en orden descendente) | Usar |
---|---|
GRAVE | fallo grave |
ADVERTENCIA | mensaje de advertencia, un problema potencial |
INFORMACIÓN | información general de tiempo de ejecución |
CONFIGURAR | información de configuración |
BIEN | información general del desarrollador (mensajes de seguimiento) |
MEJOR | información detallada del desarrollador (mensajes de seguimiento) |
MEJOR | información muy detallada del desarrollador (mensajes de seguimiento) |
DESACTIVADO | desactivar registro para todos los niveles (no capturar nada) |
TODOS | activar registro para todos los niveles (capturar todo) |
Cada nivel de registro tiene un valor entero que determina su gravedad excepto dos niveles de registro especiales OFF
y ALL
.
Registrando el mensaje
De forma predeterminada, siempre se registran los tres niveles de registro superiores. 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 FINE
y los niveles superiores están configurados para ser registrados. 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 iniciar sesión 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 han superado el nivel de registro establecido se reenvían a LogRecord .
null
, su nivel se hereda de su padre y así sucesivamente en el árbol.
2. Filtros
Un filtro (si está presente) determina si LogRecord debe reenviarse o no. Como sugiere el nombre, filtra los mensajes de registro según criterios específicos.
Un Registro de registro solo se pasa del registrador al controlador de registros y del controlador de registros a sistemas externos si cumple los criterios especificados.
// set a filter
logger.setFilter(filter);
// get a filter
Filter filter = logger.getFilter();
3. Manejadores (Adjuntos)
El controlador de registro o los anexadores reciben el LogRecord y lo exporta a varios destinos.
Java SE proporciona 5 controladores integrados:
Manejadores | Usar |
---|---|
StreamHandler | escribe en 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 LogRecord objeto en una cadena antes de exportarlo a sistemas externos.
Java SE tiene dos formateadores integrados :
Formatadores | Usar |
---|---|
SimpleFormatter | formatos Registro a cadena |
XMLFormatter | formatos Registro a formulario 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());
Administrador de registros
El Administrador de registros El objeto 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 del Registro
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 depuración de problemas
Java