English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
The following diagram shows the core components and specified process of the Java Logging API (java.util.logging).
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 |
---|---|
SEVERE | Severe failure |
WARNING | Warning messages, potential issues |
INFO | Routine runtime information |
CONFIG | Configuration 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.
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.
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();
El administrador de eventos de registro o complemento recibiráLogRecordy lo exporta a varios destinos.
Java SE proporciona5procesadores integrados:
administradores | Usar |
---|---|
StreamHandler | escribir en OutputStream |
ConsoleHandler | escribir en la consola |
FileHandler | escribir en el archivo |
SocketHandler | escribir en el puerto TCP remoto |
MemoryHandler | escribir 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();
El administrador de eventos puede usarFormateadorasignaLogRecordobjetoformateopara la cadena y luego exportarla al sistema externo.
Java SE tiene dos integradosFormateador:
Formateador | Usar |
---|---|
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());
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();
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