¿Qué es el logger en Java y por qué lo usa?



Este artículo sobre Logger en Java es una guía completa sobre la API de registro de Java utilizada para las soluciones de registro al crear proyectos.

El registro es una característica importante que los desarrolladores deben considerar para rastrear los errores. , siendo uno de los lenguajes de programación más populares, viene con un enfoque personalizable para el registro al proporcionar una API de registro básica. Entonces, en este artículo sobre Logger en Java, voy a discutir cómo puede utilizar esta función para habilitar el registro extensible en Java.

Los siguientes temas se tratarán en este artículo:





    1. Necesidad de registro
    2. Componentes de registro
    3. ¿Qué es Logger?
    4. Appender o manipuladores
    5. Diseño o formateadores

Antes, profundizamos en el registro en java, comprendamos la necesidad del registro.

Necesidad de registro

Al crear aplicaciones, a menudo nos enfrentamos a errores que deben depurarse. Entonces, con la ayuda de los registros, podemos obtener fácilmente información sobre lo que está sucediendo en la aplicación con un registro de errores y circunstancias inusuales. Ahora, podría pensar que, ¿por qué no usar la declaración System.out.print () en . Bueno, el problema con estas declaraciones es que los mensajes de registro se imprimirán solo en la consola. Entonces, una vez que cierre la consola, automáticamente, todos los registros se perderán. Por lo tanto, los registros no se almacenarán permanentemente y se mostrarán uno por uno, ya que es un entorno de un solo subproceso.



Para evitar estos problemas, el inicio de sesión en Java se simplifica con la ayuda delAPI proporcionada a través dejava.util.loggingpaquete, y elorg.apache.log4j. *paquete.

Componentes de registro

Los componentes de registro de Java ayudan al desarrollador a crear registros, pasar los registros al destino respectivo y mantener un formato adecuado. Los siguientes son los tres componentes:

  • Madereros - Responsable de capturar los registros y pasarlos al Appender correspondiente.
  • Anexos o manipuladores - Son responsables de registrar los eventos de registro en un destino. Los anexos formatean eventos con la ayuda de Layouts, antes de enviar salidas.
  • Diseños o formateadores - Responsable de determinar cómo se ven los datos cuando aparecen en la entrada del registro.

Puede consultar la siguiente imagen para ver el funcionamiento de los tres componentes:



Componentes de registro - Logger en Java - Edureka

Cuando una aplicación realiza una llamada de registro, el componente Logger registra el evento en un LogRecord y lo reenvía al Appender correspondiente. Luego, formateó el registro usando el Diseño de acuerdo con el formato requerido. Aparte de esto, también puede usar más de un Filtros para especificar qué Appenders deben usarse para eventos.

Ahora, entendamos qué es un registrador en Java en profundidad.

¿Qué es Logger en Java?

Los registradores en Java son objetos que disparan eventos de registro. Se crean y se llaman en el código de la aplicación, donde generan eventos de registro antes de pasarlos al siguiente componente que es un Appender. Puede utilizar varios registradores en una sola clase para responder a varios eventos o utilizar registradores en una jerarquía. Normalmente se nombran utilizando el espacio de nombres jerárquico separado por puntos. Además, todos los nombres del registrador deben basarse en la clase o el nombre del paquete del componente registrado.

Aparte de esto, cada registrador mantiene un registro del antepasado existente más cercano en el Registros espacio de nombres y también tiene un 'Nivel' asociado. Bueno, hablaré sobre los registradores en la última parte de este artículo, pero antes de eso, permítame mostrarle cómo crear un registrador en Java.

Crear nuevo registrador

El proceso de creación de un nuevo registrador en Java es bastante sencillo. Tienes que usarLogger.getLogger ()método. losgetLogger () identifica el nombre del registrador y toma una cadena como parámetro. Entonces, si un registrador existe previamente, ese registrador se devuelve, de lo contrario se crea un nuevo registrador.

hashmap vs hashtable en java

Sintaxis:

Logger estático logger = Logger.getLogger (SampleClass.class.getName ())

Aquí, SampleClass es el nombre de la clase para la que obtenemos el objeto Logger.

Ejemplo:

public class Cliente {privado estático final Logger LOGGER = Logger.getLogger (Customer.class) public void getCustomerDetails () {}}

Ahora que te he dicho cómo crear un registrador en Java, veamos los diferentes niveles disponibles en el registro.

Niveles de registro

Los niveles de registro se utilizan para clasificar los registros según su gravedad o el impacto en la estabilidad de la aplicación. losorg.apache.log4j. *paquete y eljava.util.loggingambos proporcionan diferentes niveles de tala. Echemos un vistazo a cada uno de ellos uno por uno.

org.apache.log4j. *El paquete proporciona los siguientes niveles en orden descendente:

  • FATAL
  • ERROR
  • ADVERTIR
  • INFO
  • DEPURAR

java.util.loggingEl paquete proporciona los siguientes niveles en orden descendente:

  • GRAVE (NIVEL MÁS ALTO)
  • ADVERTENCIA
  • INFO
  • CONFIG
  • MULTA
  • Más fino
  • MEJOR (NIVEL MÁS BAJO)

Aparte de esto, el paquete anterior también proporciona dos niveles adicionalesTODOSyAPAGADOutilizado para registrar todos los mensajes y deshabilitar el registro respectivamente.

Ejemplo de registro en Java usando elorg.apache.log4j. *paquete:

import org.apache.log4j.Logger public class Cliente {static Logger logger = Logger.getLogger (Customer.class) public static void main (String [] args) {logger.error ('ERROR') logger.warn ('WARNING' ) logger.fatal ('FATAL') logger.debug ('DEBUG') logger.info ('INFO') System.out.println ('Salida final')}}

Entonces, si tu salida esregistrador raíz como nivel WARN en nuestro log4j.properties archivo, todos los mensajes de error con una prioridad más alta que WARN se imprimirán como se muestra a continuación:

También puede establecer el nivel utilizando el método setLevel () deljava.util.loggingpaquete de la siguiente manera:

c ++ que es el espacio de nombres
logger.setLevel (Level.WARNING)

Ejemplo de registro en Java usando eljava.util.loggingpaquete:

paquete edureka import java.io.IOException import java.util.logging.Level import java.util.logging.Logger import java.util.logging. * class EdurekaLogger {privado final estático Logger LOGGER = Logger.getLogger (Logger.GLOBAL_LOGGER_NAME) public void sampleLog () {LOGGER.log (Level.WARNING, '¡Bienvenido a Edureka!')}} Public class Cliente {public static void main (String [] args) {EdurekaLogger obj = new EdurekaLogger () obj.sampleLog () LogManager slg = LogManager.getLogManager () Logger log = slg.getLogger (Logger.GLOBAL_LOGGER_NAME) log.log (Level.WARNING, 'Hola! Bienvenido de Edureka')}}

Para habilitar el inicio de sesión en su aplicación usando elorg.apache.log4j. *paquete o eljava.util.loggingpaquete, debe configurar el archivo de propiedades. A continuación, en este artículo sobre Logger en Java, analicemos el archivo de propiedades de ambos.

Archivo de propiedades de Log4j y Java Util Package

Ejemplo de archivo de propiedades de Log4j:

# Habilite la opción del registrador raíz log4j.rootLogger = INFO, file, stdout # Adjunte anexos al archivo de impresión log4j.appender.file = org.apache.log4j.RollingFileAppender log4j.appender.file.File = E: loglogging.log log4j.appender. file.MaxFileSize = 10MB log4j.appender.file.MaxBackupIndex = 5 log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {aaaa-MM-dd HH: mm : ss}% -5p% c {1}:% L -% m% n # Adjunte anexos para imprimir en la consola log4j.appender.stdout = org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target = System.out log4j.appender.stdout.layout = org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern =% d {aaaa-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n
  • El archivo de propiedades Log4j se crea dentro de la carpeta src del proyecto.
  • log4j.appender.file = org.apache.log4j.RollingFileAppender -> Imprime todos los registros en un archivo
  • log4j.appender.stdout = org.apache.log4j.ConsoleAppender -> Imprime todos los registros en la consola
  • log4j.appender.file.File = D: loglogging.log -> Especifica la ubicación del archivo de registro
  • log4j.appender.file.MaxFileSize = 10 MB -> Tamaño máximo del archivo de registro a 10 MB
  • log4j.appender.file.MaxBackupIndex = 5 -> Limita el número de archivos de respaldo a 5
  • log4j.appender.file.layout = org.apache.log4j.PatternLayout -> Especifica el patrón en el que se imprimirán los registros en el archivo de registro.
  • log4j.appender.file.layout.ConversionPattern =% d {aaaa-MM-dd HH: mm: ss}% -5p% c {1}:% L -% m% n -> Establece el patrón de conversión predeterminado.

Muestra Archivo de propiedades del paquete Java Util

handlers = java.util.logging.ConsoleHandler .level = ADVERTENCIA # La salida se almacenará en el directorio predeterminado java.util.logging.FileHandler.pattern =% h / java% u.log java.util.logging.FileHandler.limit = 60000 java.util.logging.FileHandler.count = 1 java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter # El nivel de registros se limitará a ADVERTENCIA y superior. java.util.logging.ConsoleHandler.level = ADVERTENCIA java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

Aquí,

  • java.util.logging.FileHandler.pattern =% h / java% u.log -> Los archivos de registro se escribirían enC: TEMPjava1.log
  • java.util.logging.FileHandler.limit = 50000 ->La cantidad máxima que el registrador escribe en cualquier archivo en bytes.
  • java.util.logging.FileHandler.count = 1 -> Especifica el número de archivos de salida
  • java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter -> Menciona el formateador utilizado para formatear. Aquí se utiliza XML Formatter.
  • java.util.logging.ConsoleHandler.level = ADVERTENCIA -> Establece el nivel de registro predeterminado en ADVERTENCIA
  • java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter ->Especifica elFormateadorpara ser usado por todosConsoleHandler'S. Aquí, se utiliza SimpleFormatter.

Registro de eventos

Para registrar eventos en , debe asegurarse de asignar un nivel para archivar fácilmente los eventos. Para asignar un nivel y mencionar un mensaje, puede utilizar los siguientes métodos:

Método 1:

logger.log (Level.INFO, 'Mensaje en pantalla')
Aquí, el nivel es INFO y el mensaje que se imprimirá es 'Mensaje en pantalla'.

Método 2:

logger.info ('Mensaje en pantalla')

Para asegurarse de que Logger en Java, registre solo eventos que están en o por encima del nivel INFO, puede usar el setLevel () método discutido anteriormente.

Ahora que he discutido cómo usar Logger en Java, analicemos el siguiente componente de la arquitectura Log4j, es decir, Appenders.

Appender o manipuladores

Appender o Handlers son responsables de registrar los eventos de registro en un destino. Cada registrador tiene acceso a varios controladores y recibe el mensaje de registro del registrador. Luego, los Appenders usan Formateadores o Diseños para formatear los eventos y enviarlos al destino correspondiente.

Un Appender se puede apagar usando el método setLevel (Level.OFF). Los dos manipuladores más estándar en eljava.util.loggingpaquete son los siguientes:

  • FileHandler: Escribe el mensaje de registro en el archivo
  • ConsoleHandler: Escribe el mensaje de registro en la consola.

Para su mejor comprensión, he explicado algunos Appenders en la sección de propiedades.

Diseño o formateadores

El diseño de los formateadores se utiliza para formatear y convertir datos en un evento de registro.Los marcos de registro proporcionan diseños para HTML, XML, Syslog, JSON, texto sin formato y otros registros.

  1. SimpleFormatter : Genera mensajes de texto con información básica.
  2. XMLFormatter : Genera un mensaje XML para el registro

Para su mejor comprensión, he explicado algunos diseños en la sección de propiedades.Con esto, llegamos al final de este blog sobre “Logger en Java”. Espero que tengan claro lo que se les ha enseñado en este artículo.

Revisar la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación y certificación Java J2EE y SOA de Edureka está diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog 'Logger in Java' y nos comunicaremos con usted lo antes posible.