Una posible alternativa para ajustar la propiedad additivity
es examinar sus registradores de lo más específico a lo más genérico. En el siguiente ejemplo, esperaríamos ver el inicio de sesión doble en la consola para cualquier evento de registro que ocurra en foo.bar.LoggingExampleClass. Sería seguro eliminar el apilador de consola adicional de foo.bar.LoggingExampleClass Logger como ya está cubierto por el Root Logger.
<Logger name="foo.bar.LoggingExampleClass" level="DEBUG">
<AppenderRef ref="Console" /> <!-- THIS APPENDER COULD BE REMOVED -->
<AppenderRef ref="FooBarPackageLogging" />
</Logger>
<Root level="WARN">
<AppenderRef ref="Console" />
<AppenderRef ref="MainLogFile" />
</Root>
hay ventajas y desventajas tanto para el enfoque de ajuste de aditividad y el enfoque de ajuste appender. Desactivar la adición podría inadvertidamente detener el uso de un appender de registrador de nivel genérico deseable. En el ejemplo anterior, establecer la propiedad additivity="false"
en foo.bar.LoggingExampleClass Logger significaría que el evento de registro no se agregaría al MainLogFile al que se hace referencia en el Root Logger.
Por otro lado, confiar en los padres adjuntos podría ser problemático si se cambian los apéndices principales sin examinar los efectos en los registradores más granulares. Por ejemplo, supongamos que hay un requisito de que los eventos de registro foo.bar.LoggingExampleClass se escriban en la consola. Actualmente se encuentran en la configuración de ejemplo anterior debido a la adición, incluso si se elimina el apilador de la consola del foo.bar.LoggingExampleClass Logger. Sin embargo, si el apilador de consola también se eliminó del registrador de raíz sin ningún ajuste adicional, el requisito ya no se cumpliría.
Puede haber un problema de configuración o de inicialización. ¿Dónde inicializa el registrador? ¿No llamas dos veces a Logger.getLogger (SomeClass.class)? Algún código adicional podría brindarnos más información para ayudarlo. – MaSEL