English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriales básicos de Java

Control de flujo Java

Java Arreglo

Java Orientado a Objetos (I)

Java Orientado a Objetos (II)

Java Orientado a Objetos (III)

Manejo de excepciones en Java

Java Lista (List)

Java Cola (Queue)

Conjuntos Java Map

Conjuntos Java

Java Entrada/Salida (I/O)

Lector de Java/Writer

Otras temáticas de Java

Registro (Logging) de Java

En este tutorial, aprenderemos Java registro y sus varios componentes mediante ejemplos.

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

En Java, se necesita un marco y una API para la registro de logs. Java tiene un marco de registro integrado en el paquete java.util.logging.

We can also use third-party frameworks (such as Log4j, Logback, etc.) are used for logging.

Java log components

The following diagram shows the core components and specified process of the Java Logging API (java.util.logging).

Java logging flowchart

1.Logger

The Logger class provides logging methods. We can instantiate an object from the Logger class and call its methods to log.

Let's take an example.

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

The getLogger() method of the Logger class is used to find or create a new Logger. The string parameter defines the name of the logger.

Here, this will create a new Logger object or return a Logger object with the same name.

By convention, use class.getName() to define a Logger after the current class.

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

Nota:If the passed name is null, this method will throw a NullPointerException.

Each Logger has a level to determine the importance of log messages. There is7A basic log level:

Log levels (in descending order)Usar
SEVERESevere failure
WARNING

Warning messages, potential issues

INFORoutine runtime information
CONFIGConfiguration information
FINE

Normal developer information (trace messages)

FINER

Detailed developer information (trace messages)

FINEST

Highly detailed developer information (trace messages)

OFF

Close logging for all levels (do not capture any content)

ALL

Open logging for all levels (capture all content)

Each log level has an integer value to determine its severity, except for the two special log levels OFF and ALL.

Log message

By default, the first three log levels are always logged. To set other levels, we can use the following code:

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

In this example, only Level.FINE and above levels are set for logging. Delete all other log messages.

Now we need to record a log message, we use the log() method.

logger.log(Level.LogLevel, "log message");
// Ejemplo
logger.log(Level.INFO, "Este es un mensaje de registro de nivel INFO");

Hay algunos métodos abreviados para registrar el nivel requerido.

logger.info("Este es un mensaje de registro de nivel INFO");
logger.warning("Este es un mensaje de registro de nivel WARNING");

Luego, todas las solicitudes de registro que hayan pasado por el nivel de registro configurado se transmitirán aLogRecord.

Nota:Si el nivel de un registrador de registro se establece en null, su nivel se heredará de su padre, y así sucesivamente.

2Filtro (.Filtro)

El filtro (si existe) decide si se retransmite el registro LogRecord. Como su nombre indica, filtra los mensajes de registro según estándares específicos.

SiLogRecordSi se cumple con las condiciones especificadas, solo se transmitirá desde el registrador al administrador de eventos de registro y desde el administrador de eventos de registro al sistema externo.

// Configurar filter
logger.setFilter(filter);
// Obtener filter
Filter filter = logger.getFilter();

3Administrador (.Fuente de salida)

El administrador de eventos de registro o complemento recibiráLogRecordy lo exporta a varios destinos.

Java SE proporciona5procesadores integrados:

administradoresUsar
StreamHandler

escribir en OutputStream

ConsoleHandlerescribir en la consola
FileHandlerescribir en el archivo
SocketHandler

escribir en el puerto TCP remoto

MemoryHandlerescribir en la memoria

El administrador de eventos puedeLogRecordPasar al filtro para determinar nuevamente si se puede retransmitir al sistema externo.

Para agregar un nuevo administrador de eventos, usamos el siguiente código:

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

Para eliminar el administrador de eventos, usamos el siguiente código:

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

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

Handler[] handlers = logger.getHandlers();

4Programa de formato (.Formatter)

El administrador de eventos puede usarFormateadorasignaLogRecordobjetoformateopara la cadena y luego exportarla al sistema externo.

Java SE tiene dos integradosFormateador:

FormateadorUsar
SimpleFormatter

Formatear LogRecord en cadena

XMLFormatter

Formatear LogRecord en formato XML

Podemos usar el siguiente código para formatear el manejador:

// Formatear en forma de cadena
handler.setFormatter(new SimpleFormatter());
// Formatear en formato XML
handler.setFormatter(new XMLFormatter());

Administrador de logs

Gestión de logsInformación global de seguimiento de objetos. Lee y mantiene la configuración de registro y las instancias de registrador.

El administrador de logs es un patrón de diseño singleton, lo que significa que solo se ha instanciado una vez.

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

LogManager manager = new LogManager();

Beneficios de los logs

Estos son algunos de los beneficios de usar Java Logs.

  • Ayuda a monitorear el flujo del programa

  • Ayuda a capturar cualquier error que pueda ocurrir

  • Proporciona apoyo para la diagnóstico de problemas y depuración