2011-12-13 18 views
8

¿Alguien podría decirme cuál es la relación entre log4j y apache.commons.logging? cual es mas popular y mejor?relación entre log4j y apache.commons.logging

He importado una aplicación existente en el que se han importado import org.apache.commons.logging.LogFactory; y escrito una clase separada llamada Log y se reemplaza algunos de los métodos que critical, warn, info

Por ejemplo

public static void info(String caller, String toWrite) 
    { 
     write(caller,toWrite,Log.INFO); 
    } 
Podría

a nadie por favor dime si log4j y apache.commons.logging son diferentes?

Respuesta

11

Apache Commons Logging es una abstracción para la implementación concreta. Utiliza log4j, si está presente y configurado. Usaría el registro de Commons en mi código y log4j como implementación de registro.

+0

me gustaría utilizar los Comunes el registro en mi código y log4j como la aplicación de registro, entonces ¿por qué utilizar Apache Commons Logging ?? – Pawan

+0

Puede utilizar una implementación diferente o ninguna en tiempo de ejecución, por lo que su programa es más flexible. –

+0

Muchas gracias. – Pawan

2

log4j es un marco de registro, es decir, proporciona el código para registrar mensajes. Commons-logging es una capa de abstracción para los marcos de registro, no registra nada en sí mismo. Por ejemplo, si escribo código usando el registro común y lo despliego en JBoss, Log4j realiza el registro, pero si lo despliego en el registro de WebSphere lo hace la propia implementación de registro de WebSphere. Si funciono el mismo código como una aplicación independiente que cuenta el registro de Java que se utiliza

0

De acuerdo con la documentación java-doc de commons-logging

subclase concreta de LogFactory que implementa el algoritmo siguiente para seleccionar dinámicamente un registro clase de implementación de crear una instancia de un contenedor para:

  • Utilice un atributo de configuración fábrica llamada org.apache.commons.logging.Log para identificar la clase aplicación solicitada.
  • Utilice la propiedad del sistema org.apache.commons.logging.Log para identificar la clase de implementación solicitada.
  • Si Log4J está disponible, devuelva una instancia de org.apache.commons.logging.impl.Log4JLogger.
  • Si JDK 1.4 o posterior está disponible, devuelva una instancia de org.apache.commons.logging.impl.Jdk14Logger.
  • De lo contrario, devolver una instancia de org.apache.commons.logging.impl.SimpleLog

De ahí que la inferencia es:

  • commons-logging es más de abstracción. Puede vivir sin LOG4J también.
  • Si Log4j existe, lo elige. De lo contrario, otro valor predeterminado disponible.
  • LOG4J es popular debido a su fácil redirección a un archivo y la flexibilidad para configurar los niveles de registro.

URL JavaDoc: https://commons.apache.org/proper/commons-logging/javadocs/api-1.1.3/index.html

Cuestiones relacionadas