Commons Logging
- Área: Librerías y Módulos
- Grupo: Librerías para Logging
- Carácter del recurso: Recomendado
- Tecnologías: Java
Descripció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:
- normal: contiene su api y las clases para la implementación
- api: solo contiene su propia api
- adapters: 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. Sse necesita tener el archivo log4j.jar en la carpeta lib y su archivo de configuración correspondiente. Éste 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.
- 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);
}
}
Enlaces externos
Contenidos relacionados
Código | Título | Tipo | Carácter | |
---|---|---|---|---|
LIBP-0344 | Librerías para aplicaciones Java | Libro de pautas | Directriz | Recomendada |