2010-11-10 21 views
8

Tengo un archivo log4j.properties que se ve algo como esto:Excluir una clase de una appender log4j

log4j.logger.com.foo=INFO, foo-log 
log4j.logger.com.foo.BarImpl=INFO, bar-log 

Por lo general, para las clases que coinciden con la estructura del paquete de com.foo Me gustaría que el foo-log appender a utilizar. Sin embargo, dentro de ese paquete, quiero que los registros BarImpl utilicen el appender bar-log pero no el appender foo-log. Por el momento, cualquier registro escrito por BarImpl es manejado por foo-log y bar-log (como se esperaba). ¿Cómo hago para que el apisonador foo-log ignore la clase BarImpl?

Respuesta

13

De la documentación de Log4j:

Cada solicitud de registro habilitado para un registrador dada será remitida a todos los appenders en que el maderero, así como los appenders más altos en la jerarquía. En otras palabras, los appenders se heredan de forma aditiva de la jerarquía del registrador. Por ejemplo, si se agrega un appender de consola al registrador de raíz, todas las solicitudes de registro habilitadas se imprimirán al menos en la consola. Si además se agrega un appender de archivo a un registrador, responda C, y luego las solicitudes de registro habilitadas para los hijos de C y C se imprimirán en un archivo y en la consola. Es posible anular este comportamiento predeterminado para que la acumulación de apéndices ya no sea aditiva estableciendo el indicador de aditividad en falso.

Trate de experimentar con la línea siguiente (o similar):

log4j.additivity.com.foo.BarImpl = false

Cuestiones relacionadas