Una possibile alternativa alla regolazione della proprietà additivity
consiste nell'esaminare i registri dal più specifico al più generico. Nell'esempio seguente, ci si aspetterebbe di vedere la doppia registrazione nella console per tutti gli eventi di registro che si verificano in foo.bar.LoggingExampleClass. Sarebbe sicuro rimuovere l'appender Console extra da foo.bar.LoggingExampleClass Logger poiché è già coperto dal logger principale.
<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>
Non ci sono compromessi sia per l'approccio di regolazione dell'additività e l'approccio di regolazione appender. Disattivare l'additività potrebbe inavvertitamente impedire l'utilizzo di un appender del registratore di livelli generico desiderabile. Nell'esempio sopra, l'impostazione della proprietà additivity="false"
su foo.bar.LoggingExampleClass Logger significherebbe che l'evento di registrazione non verrà aggiunto al file MainLog a cui si fa riferimento nel logger principale.
D'altra parte, basandosi su appenders genitore potrebbe essere problematico se i appenders genitore vengono modificate senza esaminare gli effetti sul logger più granulari. Ad esempio, supponiamo vi sia un requisito per cui gli eventi di registrazione foo.bar.LoggingExampleClass devono essere scritti sulla console. Attualmente sono nella configurazione di esempio di cui sopra a causa di additività, anche se viene rimosso l'appender della console del logger foo.bar.LoggingExampleClass. Tuttavia, se l'appender della console è stato rimosso dal logger principale senza ulteriori aggiustamenti, il requisito non sarebbe più soddisfatto.
Potrebbe essere un problema di configurazione o un problema di inizializzazione. Dove inizializzi il registratore? Non chiami Logger.getLogger (SomeClass.class) due volte? Alcuni codici aggiuntivi potrebbero fornirci ulteriori informazioni per aiutarti. – MaSEL