Spring - Registro con Log4J

Esta es una funcionalidad Log4J muy fácil de usar dentro de las aplicaciones Spring. El siguiente ejemplo lo llevará a través de pasos simples para explicar la integración simple entre Log4J y Spring.

Asumimos que ya tienes log4Jinstalado en su máquina. Si no lo tiene, puede descargarlo desdehttps://logging.apache.org/y simplemente extraiga el archivo comprimido en cualquier carpeta. Usaremos sololog4j-x.y.z.jar en nuestro proyecto.

A continuación, tengamos un IDE de Eclipse en funcionamiento y tomemos los siguientes pasos para desarrollar una aplicación web basada en formularios dinámicos utilizando Spring Web Framework:

Pasos Descripción
1 Cree un proyecto con un nombre SpringExample y cree un paquete com.tutorialspoint bajo elsrc carpeta en el proyecto creado.
2 Agregue las bibliotecas Spring requeridas usando la opción Agregar JAR externos como se explica en el capítulo Ejemplo de Spring Hello World .
3 Agregue la biblioteca log4j log4j-xyzjar también en su proyecto usando Agregar JAR externos .
4 Cree clases Java HelloWorld y MainApp en el paquete com.tutorialspoint .
5 Cree el archivo de configuración de Beans Beans.xml bajo elsrc carpeta.
6 Cree el archivo de configuración log4J log4j.properties bajo elsrc carpeta.
7 El paso final es crear el contenido de todos los archivos Java y el archivo de configuración de Bean y ejecutar la aplicación como se explica a continuación.

Aquí está el contenido de HelloWorld.java archivo

package com.tutorialspoint;

public class HelloWorld {
   private String message;
   
   public void setMessage(String message){
      this.message  = message;
   }
   public void getMessage() {
      System.out.println("Your Message : " + message);
   }
}

A continuación se muestra el contenido del segundo archivo MainApp.java

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.log4j.Logger;

public class MainApp {
   static Logger log = Logger.getLogger(MainApp.class.getName());
   
   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      log.info("Going to create HelloWord Obj");
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();
      
      log.info("Exiting the program");
   }
}

Puedes generar debug y errormensaje de forma similar a como hemos generado mensajes de información. Ahora veamos el contenido deBeans.xml archivo

<?xml version = "1.0" encoding = "UTF-8"?>

<beans xmlns = "http://www.springframework.org/schema/beans"
   xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation = "http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

   <bean id = "helloWorld" class = "com.tutorialspoint.HelloWorld">
      <property name = "message" value = "Hello World!"/>
   </bean>

</beans>

A continuación se muestra el contenido de log4j.properties que define las reglas estándar requeridas para que Log4J produzca mensajes de registro

# Define the root logger with appender file
log4j.rootLogger = DEBUG, FILE

# Define the file appender
log4j.appender.FILE=org.apache.log4j.FileAppender
# Set the name of the file
log4j.appender.FILE.File=C:\\log.out

# Set the immediate flush to true (default)
log4j.appender.FILE.ImmediateFlush=true

# Set the threshold to debug mode
log4j.appender.FILE.Threshold=debug

# Set the append to false, overwrite
log4j.appender.FILE.Append=false

# Define the layout for file appender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n

Una vez que haya terminado con la creación de archivos de configuración de fuente y bean, permítanos ejecutar la aplicación. Si todo está bien con su aplicación, esto imprimirá el siguiente mensaje en la consola de Eclipse:

Your Message : Hello World!

Si comprueba su unidad C: \\, entonces debería encontrar su archivo de registro log.out con varios mensajes de registro, como algo así:

<!-- initialization log messages -->

Going to create HelloWord Obj
Returning cached instance of singleton bean 'helloWorld'
Exiting the program

API de Jakarta Commons Logging (JCL)

Alternativamente, puede usar Jakarta Commons Logging (JCL)API para generar un registro en su aplicación Spring. JCL se puede descargar desdehttps://jakarta.apache.org/commons/logging/. El único archivo que técnicamente necesitamos salir de este paquete es el commons-logging-xyzjar archivo, que tiene que ser colocado en la ruta de clase de una manera similar a la que había puesto log4j-xyzjar en el ejemplo anterior.

Para usar la funcionalidad de registro, necesita un objeto org.apache.commons.logging.Log y luego puede llamar a uno de los siguientes métodos según sus requisitos:

  • fatal (mensaje de objeto)
  • error (mensaje de objeto)
  • advertir (mensaje de objeto)
  • info (mensaje de objeto)
  • debug (mensaje de objeto)
  • trace (mensaje de objeto)

A continuación se muestra el reemplazo de MainApp.java, que hace uso de la API de JCL

package com.tutorialspoint;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.commons.logging. Log;
import org.apache.commons.logging. LogFactory;

public class MainApp {
   static Log log = LogFactory.getLog(MainApp.class.getName());

   public static void main(String[] args) {
      ApplicationContext context = new ClassPathXmlApplicationContext("Beans.xml");
      log.info("Going to create HelloWord Obj");
      HelloWorld obj = (HelloWorld) context.getBean("helloWorld");
      obj.getMessage();

      log.info("Exiting the program");
   }
}

Debe asegurarse de haber incluido el archivo commons-logging-xyzjar en su proyecto, antes de compilar y ejecutar el programa.

Ahora, manteniendo el resto de la configuración y el contenido sin cambios en el ejemplo anterior, si compila y ejecuta su aplicación, obtendrá un resultado similar al que obtuvo con la API de Log4J.