Deaktivieren Sie die log4j-Ausgabe während der unit-tests
Es ist gängige Praxis, erhalten Logger über die statische factory (obwohl es Total brokes DI-Prinzip). Und tatsächlich, es ist in Ordnung, es sei denn, Sie möchten, um loszuwerden, der Protokollierung völlig, z.B. während der Ausführung von unit-tests.
Konnte ich ausschalten log4j Protokollierung mit den folgenden Zauber:
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for (Logger logger : loggers) {
logger.setLevel(Level.OFF);
}
Immer noch druckt es einige setup-info in der Konsole den Anfang:
log4j: reset attribute= "false".
log4j: Threshold ="null".
log4j: Retreiving an instance of org.apache.log4j.Logger.
log4j: Setting [test] additivity to [false].
log4j: Level value for test is [DEBUG].
...
Wie deaktiviere ich es als gut, programmgesteuertwährend der Ausführung von unit-test-suite?
InformationsquelleAutor der Frage Denis Kulagin | 2014-09-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du wohl aktiviert haben interne log4j-Protokollierung in Ihrer
log4j.properties
oderlog4j.xml
Datei.Log4j verwendet eine Klasse namens LogLogum diese interne Protokollierung der Anrufe.
Sie können deaktivieren LogLog ' s Ausgabe durch Aufruf
LogLog.setQuietMode(true)
.Das ganze muss vor dem ersten Aufruf von log4j, die Trigger-Initialisierung. Beachten Sie jedoch, dass
setQuietMode()
nicht nur deaktiviert die debug-Ausgabe, aber auch Warnungen.Ich würde daher empfehlen, dass Sie einen separaten logging-Konfiguration für tests. Raedwald skizziert, wie dies in der Antwort Sie verlinkt wird.
Hier ist ein Beispiel
log4j.xml
- Datei, die Sie verwenden können. Beachten Sie diedebug="false"
Eigenschaft. Es ist nicht unbedingt notwendig, um dieses, obwohl, wie der default-Wert istfalse
.Wenn Sie mit maven, legen Sie die Datei in
src/test/resources
mit denen sichergestellt wird, dass diese Datei wird abgeholt, die für die tests statt Ihrer Hauptkonfigurationsdatei an.Dies ist das äquivalent
log4j.properties
Datei:InformationsquelleAutor der Antwort Johan Boberg