Samudra Gupta explica en su libro 1 :
El Logger
objeto es el objeto principal que utiliza un desarrollador de aplicaciones para registrar cualquier mensaje. Los Logger
objetos que actúan dentro de una instancia particular de una aplicación siguen una jerarquía de padres e hijos .
Si tiene la siguiente configuración:
log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO
Así es como la jerarquía del registrador podría terminar pareciendo: 2
Samudra Gupta continúa explicando:
En la parte superior de la jerarquía existe un registrador raíz. El registrador raíz existe fuera del alcance de cualquier jerarquía de registradores personalizados que se nos ocurra. Siempre existe como registrador raíz para todas las jerarquías de registradores posibles y no tiene espacio de nombres. Todos los demás Logger
objetos específicos de la aplicación son objetos secundarios del registrador raíz. La relación padre-hijo de los registradores significa la dependencia de los registradores que actúan dentro de la misma aplicación. Un registrador secundario puede heredar propiedades de su registrador principal de forma recursiva en el árbol. Normalmente, un registrador secundario heredará las siguientes propiedades de su registrador principal:
Level
: Si el registrador hijo no tiene un nivel de árbol explícito especificado, utilizará el nivel de su padre más cercano o el primer nivel adecuado que encuentre recursivamente en la jerarquía.
Appender
: Si no hay un appender adjunto a un registrador, el registrador hijo usa el appender de su registrador padre más cercano o el primer appender que encuentra recursivamente en el árbol.
ResourceBundle
: ResourceBundles
son archivos de propiedades de patrones de clave-valor que se utilizan para la localización de mensajes de registro. Un registrador hijo hereda cualquier ResourceBundle
asociado con su registrador padre.
NOTAS
1 Samudra Gupta, Pro Apache Log4j, segunda edición (Berkeley, CA: Apress, 2005), 24-25, ISBN13: 978-1-59059-499-5
2 Dominic Mitchell, Logging in Java , http://happygiraffe.net/blog/2008/09/03/logging-in-java/ , consultado el 26 de mayo de 2014.
Contestar
Si no configura rootLogger en un nivel y un appender, recibirá una advertencia.
Por ejemplo, si omite o comenta la línea
log4j.rootLogger=DEBUG, stdout
, es decir, dice que su archivo log4j.properties contiene solo el registrador raíz y no registradores adicionales, aquí se comenta el registrador raíz:Obtendrá algo como el siguiente resultado:
log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
fuente
La propiedad log4j.rootLogger establece el Nivel (DEBUG aquí) y Appender (A1 aquí) para root Logger. Esto no es obligatorio. El registrador de raíces no tiene adjunto un appender predeterminado y puede existir sin un appender. Por lo tanto, su archivo de propiedades log4j puede estar sin que se establezca esta propiedad.
El registrador raíz es el registrador más alto en la jerarquía de log4j similar a la clase Object en Java.
fuente