Utilizar un Logger en Java

Rashmi Patidar 12 octubre 2023
Utilizar un Logger en Java

En el lenguaje de programación Java, Logging es una API que permite a los usuarios rastrear el error generado por las clases específicas. Un registrador ayuda en el mecanismo de registro en tiempo real agregando marcas de tiempo y los puntos finales donde se llena. La API ayuda a mantener el seguimiento de eventos como un registro de un registro. Los registros ayudan a localizar la causa raíz de los problemas que ocurrieron y regeneran el mismo evento más tarde.

Este artículo le muestra un método para utilizar mejor los registros de Java.

Las funciones de un registrador en Java

El registrador y su función se muestran en el programa siguiente.

package log_file;

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

public class AddLoggerInFile {
  public static void main(String[] args) {
    Logger logger = Logger.getLogger("MyLog");
    FileHandler fileHandler;
    try {
      fileHandler = new FileHandler("src/main/resources/MyLogFile.txt");
      logger.addHandler(fileHandler);
      SimpleFormatter simpleFormatter = new SimpleFormatter();
      fileHandler.setFormatter(simpleFormatter);
      logger.info("Log to test");

    } catch (SecurityException e) {
      logger.info("Exception:" + e.getMessage());
      e.printStackTrace();
    } catch (IOException e) {
      logger.info("IO Exception:" + e.getMessage());
      e.printStackTrace();
    }
    logger.info("Hi In the main class");
  }
}

En el bloque de código anterior, se crea una instancia de un registrador inicialmente.

La clase está presente en el paquete java.util.logging. El getLogger es un método estático presente en la clase Logger que crea un registrador si no está presente en el sistema con el nombre dado. La función else devuelve la instancia del registrador existente si ya está presente.

La función arroja NullPointerException si el nombre dado es el valor nulo. Una vez que se crea una instancia de la instancia del registrador, se crea una instancia del controlador de archivos.

La clase FileHandler está presente en el paquete java.util.logging y se diseña y configura específicamente para manejar el registro impreso usando la instancia de logger. El constructor FileHandler inicializa el controlador para escribir la información en el nombre de archivo dado. El constructor toma el nombre del archivo de salida como parámetro.

En el código anterior, se proporciona una ruta relativa con el nombre del archivo. El tamaño no está definido en el archivo, ya que puede extenderse hasta el límite de los registros. El constructor lanza IOException cuando el compilador enfrenta un problema al abrir los archivos. Lanza SecurityException si un administrador de seguridad no tiene LoggingPermission y IllegalArgumentException si el patrón es una cadena vacía.

El método addHandler asigna un controlador de archivos para recibir los mensajes de registro en el archivo. La función es del tipo de retorno void, ya que no devuelve ningún valor. En cambio, solo consume los registros y eventos. Lanza SecurityException si un administrador de seguridad no tiene suficientes permisos de registro.

Se inicia la instancia de SimpleFormatter; la clase también está presente en el paquete java.util.logging. El formateador permite el privilegio de autoformatear los registros usando la propiedad logging.SimpleFormatter.format. Esta propiedad permite que los mensajes de registro estén en un formato definido y, por lo tanto, mantengan la uniformidad.

El setFormatter es una función que establece un formateador en la instancia del registrador. La info es una función presente en la clase Logger para imprimir los mensajes de registro INFO en el archivo. Puede haber varios niveles de registro presentes en la clase Nivel. Según el uso, podemos utilizar los registros INFO, DEBUG, FINE, CONFIG y SEVERE.

Los niveles de registro son los detalles de registro que definen la gravedad del registro del programa. Los niveles tienen un número definido y un significado específico. Por ejemplo, SEVERE tiene un valor logarítmico de 1000, y denota la falla en el sistema y debe ser atendido de inmediato.

La gravedad se produce cuando se pierde alguna falla en la red o se pierde la conectividad de la base de datos. Del mismo modo, el nivel WARNING tiene un valor de 900 y denota el riesgo potencial en el sistema.

A continuación se muestra la salida que se completa en la salida de la consola estándar y el archivo MyLogFile.txt.

Producción :

Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Log to test
Jul 04, 2021 12:05:29 AM log_file.AddLoggerInFile main
INFO: Hi In the main class
Rashmi Patidar avatar Rashmi Patidar avatar

Rashmi is a professional Software Developer with hands on over varied tech stack. She has been working on Java, Springboot, Microservices, Typescript, MySQL, Graphql and more. She loves to spread knowledge via her writings. She is keen taking up new things and adopt in her career.

LinkedIn

Artículo relacionado - Java Logging