Para ver esta característica es necesario adentrarse un poco más en la configuración y el código necesario para trabajar con Log4j. En el siguiente ejemplo se muestra como tracear una clase.
En la segunda línea se obtiene el objeto con el cual se escriben las trazas, el objeto Logger. Se puede hacer referencia a este objeto bajo el nombre "escritor", ya que es el quien se encarga de escribir los mensajes a los diferentes soportes con los cuales Log4j trabaja.
Para obtener este objeto se le pasa la clase, o el nombre completo de la clase, es decir, paquete.otropaquete.NombreClase, o cualquier otro nombre con el que se defina la categoría de esta traza. Una categoría suele ser el nombre completo de la clase, ya que normalmente, las aplicaciones se dividen en diversos paquetes. También, si un componente utiliza más de un paquete es común definir la categoría con el nombre del componente, para tratar de la misma forma las trazas escritas en los dos paquetes.Se puede jerarquizar las categorías, separando los niveles con "."(Puntos). Por tanto si se define la categoría con el nombre componente.primario, primario es una categoría hija de componente. Como veremos mas adelante, las configuraciones que se asocien a componente serán heredadas por primario. Estas configuraciones se realizan en el archivo de configuración .Log4j se puede configurar desde un archivo XML o desde un archivo de propiedades. Empecemos por la mas antigua y sencilla, el archivo de propiedades.
Para configurar Log4j de esta forma es necesario que el archivo log4j.properties este en el CLASSPATH de nuestra aplicación. Esto quiere decir que tiene que estar en la raíz de nuestro código, o dentro de algún archivo JAR que nuestra aplicación cargue, o al lanzar el programa, fijando la propiedad del sistema con el argumento
En el ejemplo fijamos el nivel por defecto a DEBUG (muy típico cuando estamos desarrollando el código) y redireccionamos a los appenders Consola y Fichero.
Ya tenemos todo nuestro código fijado con un nivel de trazas DEBUG. En muchos casos, no nos interesa ver todas las trazas de una aplicación, por ejemplo, cuando se utiliza un componente cuyo funcionamiento ya ha sido probado. Para subir el nivel de traza a INFO o WARN en dicho componente escribimos la siguiente propiedad en el fichero de configuración.
O si se utiliza como nombre de categoría la ruta completa a las clases
Cuando se realiza esta operación, decimos que la categoría tiene un nivel de traza fijado de forma explicita. Esto hace que el paquete "com.empresa.componente" tenga el nivel de traza fijado a INFO, o lo que es lo mismo, no se escribirá ninguna traza de nivel DEBUG dentro de ese paquete. Si el componente tiene subpaquetes, y estos no tienen un nivel de traza fijado de forma explicita, heredan el nivel de traza del paquete que los contiene.
Visto al revés, si un paquete no tiene asignado de forma explicita un nivel de prioridad de traza, el paquete obtiene el nivel del paquete en el que esta contenido. Así de forma recursiva, hasta que se encuentre con un paquete con nivel de traza asignado de forma explicita o con el nivel principal de la jerarquía, con ROOT.
A continuación 3 ejemplos que visualizan el comportamiento de herencia anteriormente descrito. (Fijaros en la última columna)
| Nivel Jerarquía Clases CATEGORIA | Nivel de traza asignado de forma explicita | Nivel de traza asignado |
| root | DEBUG | DEBUG |
| X | ninguno | DEBUG |
| X.Y | ninguno | DEBUG |
| X.Y.Z | ninguno | DEBUG |
| Nivel Jerarquía Clases CATEGORIA | Nivel de traza asignado de forma explicita | Nivel de traza asignado |
| root | DEBUG | DEBUG |
| X | WARN | WARN |
| X.Y | INFO | INFO |
| X.Y.Z | DEBUG | DEBUG |
| Nivel Jerarquía Clases CATEGORIA | Nivel de traza asignado de forma explicita | Nivel de traza asignado |
| root | DEBUG | DEBUG |
| X | ninguno | DEBUG |
| X.Y | ninguno | DEBUG |
| X.Y.Z | INFO | INFO |
Usuarios que han visto este tema también han visto...
- Clases e instancias en Java.
- Descompilar codigo Java
- Introducción a las Java Server Pages
- Precisión infinita en Java
- La fecha en un JSP
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2008 Factoría de Internet S.L.. Todos los derechos reservados.