Désactive la sortie de log4j pendant les tests unitaires
Il est de pratique courante pour obtenir des enregistreurs via statique-usine (bien que totalement brokes DI principe). Et en fait, c'est bien, à moins que vous souhaitez vous débarrasser de l'exploitation forestière totalement, par exemple, lors de l'exécution de l'unité-tests.
J'ai été en mesure de couper log4j de journalisation, en utilisant la suite sort:
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for (Logger logger : loggers) {
logger.setLevel(Level.OFF);
}
Encore il affiche des informations de configuration de la console dans le tout début:
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].
...
Comment puis-je désactiver ainsi, par programmelors de l'exécution des tests unitaires suite?
source d'informationauteur Denis Kulagin
Vous devez vous connecter pour publier un commentaire.
Vous avez probablement activé interne de journalisation log4j dans votre
log4j.properties
oulog4j.xml
fichier.Log4j utilise une classe appelée LogLog de faire de ces internes de la journalisation des appels.
Vous pouvez désactiver LogLog de la sortie en appelant
LogLog.setQuietMode(true)
.Cela doit être mis en avant le premier appel à log4j, ce qui déclenche l'initialisation. Notez, cependant, que
setQuietMode()
n'empêche pas seulement de la sortie de débogage, mais aussi des mises en garde.Je voudrais donc vous recommandons d'utiliser une configuration de connexion pour vos tests. Raedwald décrit la façon de faire dans le réponse - ils liés à.
Voici un exemple
log4j.xml
fichier que vous pouvez utiliser. Avis de ladebug="false"
de la propriété. Il n'est pas strictement nécessaire pour ce faire, cependant, que la valeur par défaut estfalse
.Si vous utilisez maven, placez le fichier dans
src/test/resources
qui fera en sorte que ce fichier sera ramassé à des tests à la place de votre fichier de configuration principal.C'est l'équivalent
log4j.properties
fichier: