01/12/2012
Apache Commons Logging (antes conocido como Jakarta Commons Logging o JCL) es una utilidad de registro basada en Java y un modelo de programación para el registro y otras herramientas. Proporciona APIs, implementaciones de registro e implementaciones de wrapper sobre otras herramientas.
- ¿Qué es Commons Logging?
- ¿Por qué usar Commons Logging?
- Cómo usar Commons Logging en Java
- Métodos de Depuración de Commons Logging
- Niveles de Severidad
- Dónde colocar las propiedades de Commons Logging
- Implementación de LogFactory Predeterminada
- Configuración del Sistema de Registro Subyacente
- ¿Commons Logging usa Log4j?
- Descarga de Commons Logging
- Consultas Habituales
¿Qué es Commons Logging?
Commons Logging es una biblioteca que proporciona una interfaz abstracta para el registro en Java. Esto significa que puedes escribir código que utilice la misma API de registro, independientemente de la implementación de registro subyacente que estés utilizando (por ejemplo, Log4j, java.util.logging, etc.).
Esto facilita la migración entre diferentes implementaciones de registro, ya que solo necesitas cambiar la configuración, no el código de tu aplicación. Es importante destacar que Commons Logging no es una implementación de registro en sí misma, sino una capa de abstracción.

¿Por qué usar Commons Logging?
Existen varias razones por las que podrías querer utilizar Commons Logging en tus proyectos Java:
- Abstracción: Permite cambiar fácilmente la implementación de registro sin modificar el código fuente.
- Portabilidad: Facilita el desarrollo de aplicaciones que puedan ser desplegadas en diferentes entornos con distintos sistemas de registro.
- Simplicidad: Ofrece una API de registro sencilla e intuitiva.
- Madurez: Es una biblioteca estable y ampliamente utilizada en la comunidad Java.
Cómo usar Commons Logging en Java
- Importar las clases de Commons Logging:
import org.apache.commons.logging.Log; import org.apache.commons.commons.logging.LogFactory; - Crear una variable estática para almacenar el logger:
private static final Log log = LogFactory.getLog(MyClassName.class.getName());ReemplazaMyClassName.class.getName()con el nombre de tu clase o una categoría de registro que te permita filtrar mensajes por diferentes granularidades. - Llamar a los métodos del logger para emitir un mensaje de diagnóstico:
log.debug("Este es un mensaje de depuración");oif (log.isDebugEnabled()) { log.error("Error - el archivo no se puede encontrar: " + fileName); } - Personalizar la salida del registro: En tiempo de ejecución, se busca en el classpath el archivo 'log4j.properties' que se usa para personalizar la salida del registro. El archivo 'log4j.properties' que se encuentra en el módulo más alto se utiliza cuando se ejecuta la aplicación. Normalmente, es el archivo kepler/resources/log4j.properties. Para personalizar la salida, edita este archivo.
Métodos de Depuración de Commons Logging
Commons Logging ofrece diferentes niveles de severidad para los mensajes de registro:

- log.fatal(String msg): Para errores muy graves que probablemente harán que la aplicación se detenga.
- log.error(String msg): Para errores que pueden permitir que la aplicación continúe ejecutándose.
- log.warn(String msg): Para situaciones potencialmente dañinas.
- log.info(String msg): Para mensajes informativos que destacan el progreso de la aplicación.
- log.debug(String msg): Para eventos informativos detallados que son más útiles para depurar una aplicación.
Niveles de Severidad
| Nivel | Descripción | Ejemplo |
|---|---|---|
| FATAL | Errores muy graves que provocan la terminación prematura. | Justo antes de un System.exit(1) |
| ERROR | Errores en tiempo de ejecución o condiciones inesperadas. | Cuando se captura una excepción |
| WARN | Situaciones potencialmente dañinas. | Si algo sucede que no es crítico, pero puede hacer que el software funcione mal |
| INFO | Eventos en tiempo de ejecución interesantes (inicio/detención). | Cuando ocurren eventos importantes |
| DEBUG | Información detallada sobre el flujo a través del sistema. | Para todas las demás impresiones de minucias que solo son interesantes para alguien que está depurando específicamente la aplicación. |
Dónde colocar las propiedades de Commons Logging
La selección de una implementación de LogFactory se realiza mediante un algoritmo de descubrimiento que comprueba:
- Una propiedad del sistema llamada
org.apache.commons.logging.LogFactory - El mecanismo de descubrimiento de servicios JAR de JDK 3 (
META-INF/services/org.apache.commons.logging.LogFactory) - Un archivo de propiedades llamado
commons-logging.propertiesen el classpath. - Una implementación predeterminada (
org.apache.commons.logging.impl.LogFactoryImpl).
Si se encuentra un archivo commons-logging.properties, todas las propiedades definidas allí también se utilizan para establecer atributos de configuración en la instancia de LogFactory instanciada.
Implementación de LogFactory Predeterminada
La implementación predeterminada de LogFactory ( org.apache.commons.logging.impl.LogFactoryImpl) utiliza las siguientes reglas:
- Se creará como máximo una instancia de Log del mismo nombre.
- Cuando se debe crear una nueva instancia de Log, el proceso de descubrimiento es el siguiente:
- Busca una propiedad del sistema llamada
org.apache.commons.logging.Log. - Busca un atributo de configuración de esta fábrica llamado
org.apache.commons.logging.Log. - Si el sistema de registro Log4j está disponible en el classpath, utiliza la clase wrapper correspondiente (
Log4JCategoryLog). - Si la aplicación se está ejecutando en un sistema JDK 4, utiliza la clase wrapper correspondiente (
Jdk14Logger). - De forma predeterminada, utiliza el wrapper de registro sin salida (
NoOpLog).
- Busca una propiedad del sistema llamada
Configuración del Sistema de Registro Subyacente
El usuario es totalmente responsable de la configuración del sistema de registro subyacente. Commons-logging no debe cambiar la configuración existente. Cada implementación de Log puede admitir sus propias propiedades de configuración.
¿Commons Logging usa Log4j?
Commons Logging intenta ser lo más discreto posible. En la mayoría de los casos, incluir commons-logging.jaren el classpath debería hacer que JCL se configure de manera razonable. Es probable que adivine su sistema de registro preferido, y no necesitará configurar JCL en absoluto.

Sin embargo, si tiene una preferencia particular, se recomienda proporcionar un archivo commons-logging.propertiessimple que especifique la biblioteca de registro concreta que se utilizará, ya que en este caso, JCL solo registrará en ese sistema e informará de cualquier problema de configuración que impida el uso de ese sistema.
Cuando no se especifica ninguna biblioteca de registro en particular, JCL ignorará silenciosamente cualquier biblioteca de registro que encuentre pero que no pueda inicializar y continuará buscando otras alternativas. Esta es una decisión de diseño deliberada; ninguna aplicación debería fallar al ejecutarse porque no se puede utilizar una biblioteca de registro "adivinada".
Descarga de Commons Logging
Para descargar la libreria Commons Logging, puedes visitar el sitio web de Apache Commons y buscar la versión que necesitas. Asegúrate de descargar la versión compatible con tu versión de Java.
Recuerda que la correcta configuración del archivo commons-logging.properties(o el uso de propiedades del sistema) es crucial para el funcionamiento de Commons Logging. Experimenta con diferentes configuraciones para encontrar la que mejor se adapta a tus necesidades.

Consultas Habituales
- ¿Cómo agregar Commons Logging a mi proyecto Maven? Agrega la siguiente dependencia a tu archivo
pom.xml:<dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>2</version> </dependency> - ¿Cómo configurar Commons Logging con Log4j? Crea un archivo
log4j.propertiescon la configuración necesaria para Log4j. Commons Logging detectará automáticamente Log4j si está presente en el classpath.
Con esta información, podrás implementar Commons Logging en tus proyectos Java de manera efectiva.
Si quieres conocer otros artículos parecidos a Descarga la librería commons logging para java puedes visitar la categoría Libros y Librerías.
