Commons Logging
- Área: Librerías y Utilidades para Aplicaciones Java
- Carácter del recurso: Recomendado
Descripción
Introducción
Es una pasarela a diferentes librerías de logging. Las librerías de logging que soportan integración; son Log4J, Avalon LogKit, SimpleLog y el propio JDK. Los objetivos de esta pasarela son:
- Encapsular el API de log que decidamos utilizar en cada aplicación.
- Proporcionar una única manera de implementar el registro de estados, testeo de usos y rastreo de errores, sin tener en cuenta el API de log que haya por debajo.
Normalmente se utiliza el componente Commons Logging para quitar dependencias en tiempo de compilación o ejecución a cualquier paquete de log, y ofrecer un interfaz común para generar logs independientemente de la librería elegida, es decir utilizamos el api de commons-logging en las declaraciones y el api del componente elegido en la ejecución.
Existen tres versiones de la librería commons-logging:
- la normal, que contiene su api y las clases para la implementación
- api, solo contiene su propia api
- adapters, solo contiene las clases necesarias para la implementación
Dos son las clases principales de este componente, Log y LogFactory. Log es el componente fundamental, es el que implica el registro propiamente hablando. Seis son los niveles de rastreo utilizado por el interfaz Log, dependiendo de su importancia de menor a mayor son, trace, debug, info, warn, error y fatal, asociado a cada nivel hay un método con el mismo nombre.
LogFactory es la factoría de objetos Log. Seguirá el siguiente orden para determinar que tipo de objeto log instanciar:
- Busca un fichero de propiedades llamado commons-logging.properties visible en el classpath de la aplicación.
- Busca una propiedad de sistema llamada org.apache.commons.logging.LogFactory dentro del fichero.
- Si el componente Log4J está disponible en el classpath de la aplicación utiliza la clase Log4JLogger, se necesita tener el archivo log4j.jar en la carpeta lib y su archivo de configuración correspondiente, este puede ser un archivo properties o un xml. Si no encuentra el archivo de configuración dará una advertencia y no funcionará log4j ni seguirá buscando otro componente.
- El siguiente paso es usar el logger integrado dentro del JDK en uso, bien sea el 1.4 o el 1.5.
- Y por defecto si no encuentra ninguno de los anteriores utilizará la clase SimpleLog
Usos y recomendaciones conocidas
- Recomendado por el Framework Spring
- Habitual su uso en entornos de la Junta de Andalucía
- Incluido en los principales IDE's de desarrollo
Ejemplo de uso
A continuación se muestra el fichero de propiedades commons-logging.properties. Implementación del log con Log4J.
org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.LogFactoryImpl
Una vez configurado el fichero de propiedades podríamos utilizar logs de la siguiente manera:
CommonsLoggingExample.java import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class CommonsLoggingExample
{
static Log log = LogFactory.getLog(CommonsLoggingExample.class);
public CommonsLoggingExample()
{
try
{
log.debug("Clase inicializada");
}
catch (IllegalStateException e)
{
log.error("Se ha producido un error" , e);
}
}
public void metodo(String mensaje)
{
log.info("Llamada al metodo método con mensaje " + mensaje);
}
}
Requisitos e incompatibilidades
Tener instalado la versión 1.4 de la JDK