Schließen Sie eine Klasse von einem log4j-Appender aus

8

Ich habe eine log4j.properties-Datei, die ungefähr so ​​aussieht:

%Vor%

Normalerweise sollte für Klassen, die der Paketstruktur von com.foo entsprechen, der foo-log appender verwendet werden. In diesem Paket möchte ich jedoch, dass die BarImpl -Protokolle den bar-log appender, nicht aber den foo-log appender verwenden. Momentan werden alle von BarImpl geschriebenen Protokolle sowohl von foo-log als auch von bar-log (wie erwartet) verarbeitet. Wie bekomme ich den foo-log Appender, um die BarImpl-Klasse zu ignorieren?

    
digiarnie 10.11.2010, 00:20
quelle

1 Antwort

13

Aus der Log4j-Dokumentation:

  

Jede aktivierte Logging-Anfrage für einen bestimmten Logger wird an alle Appender in diesem Logger sowie an die höheren Appender in der Hierarchie weitergeleitet. Mit anderen Worten, Appender werden additiv von der Logger-Hierarchie vererbt. Wenn beispielsweise ein Konsolenappender zum Stammlogger hinzugefügt wird, werden alle aktivierten Protokollanforderungen zumindest auf der Konsole gedruckt. Wenn zusätzlich ein Datei-Appender zu einem Logger hinzugefügt wird, beispielsweise C, dann werden die aktivierten Protokollierungsanforderungen für C- und C-Kinder in einer Datei und auf der Konsole gedruckt. Es ist möglich, dieses Standardverhalten zu überschreiben, sodass die Appender-Akkumulation nicht länger additiv ist, indem Sie das Additivitäts-Flag auf false setzen.

Experimentieren Sie mit der folgenden Zeile (oder ähnlich):

  

log4j.additivity.com.foo.BarImpl = false

    
Jason 10.11.2010, 00:47
quelle

Tags und Links