2012-10-12 62 views
19

perdón si la pregunta es demasiado trivial. Soy completamente nuevo en log4j. He visto que hay dos etiquetas y etiquetas que hacen referencia a varios apéndices. Digamos que quiero registrar la información en mi base de código en un archivo, enviarla a mi correo electrónico e imprimirla en la consola. Quiero que el nivel se ajuste a la información. ¿No es suficiente con tener una sola etiqueta que tenga referencias a los tres apéndices? (Archivo, correo electrónico y consola) ¿por qué necesitamos otra para lo mismo?¿por qué necesitamos root y registrador en log4j.xml

+0

quiero decir, ¿no es suficiente con tener una sola etiqueta raíz? que tiene tres referencias a los appenders? – parameswar

Respuesta

30

Es suficiente.

En log4j, un registrador está asociado a un paquete o, a veces, a una clase en particular. El paquete/clase de un registrador se define por el atributo "nombre". Un registrador registra los mensajes en su paquete y también en todos los paquetes secundarios y sus clases. La única excepción es el registrador de raíz que registra mensajes para todas las clases en la aplicación.

Un registrador también tiene nivel y puede tener uno o varios apéndices (destinos de registro) conectados.

En el siguiente ejemplo tenemos dos registradores:

  • el registrador raíz que registra los mensajes con el nivel INFO o por encima de los todos los paquetes a los diferentes destinos de la consola, correo electrónico y archivos,
  • "com.foo" registrador que registra mensajes con nivel WARN o superior en el paquete "com.foo" y sus paquetes secundarios en el otro archivo.

    <log4j:configuration> 
        <!-- Declaration of appenders FILE, MAIL, CONSOLE and ANOTHERFILE --> 
        ... 
        <!-- --> 
    
        <logger name="com.foo"> 
         <level value="warn"/> 
         <appender-ref ref="ANOTHERFILE" /> 
        </logger> 
        <root> 
         <priority value ="info" /> 
         <appender-ref ref="FILE" /> 
         <appender-ref ref="MAIL" /> 
         <appender-ref ref="CONSOLE" /> 
        </root> 
    </log4j:configuration> 
    

Usted debe read more acerca de los fundamentos de log4j.

+0

¿El registrador de raíz también registra los mensajes de la clase "com.foo"? –

+0

@ mmc18 Sí, definitivamente. Todos los mensajes que se escriben para agregar ANOTHERFILE también se escriben en los apéndices del registrador de raíz. –

+1

Solo una nota adicional, puede evitar que los mensajes enviados a ANOTHERFILE se envíen al registrador de raíz estableciendo la propiedad additivity del registrador en falso. Piense en ello como una excepción, burbujeando desde un nivel inferior hasta la parte superior (raíz). addivity es la "captura" sin un "lanzamiento" – JReader

Cuestiones relacionadas