web-dev-qa-db-fra.com

Comment définir le niveau de journalisation Spring pendant les tests?

Ma pile de tests Spring Boot est Maven + Surefire + JUnit4. J'annote les tests avec @RunWith(SpringJUnit4ClassRunner.class).

J'ai application.properties dans la racine de mon projet avec cette ligne:

logging.level.root=INFO

Cela contrôle la journalisation lors de l'exécution de l'application de démarrage Spring et cela fonctionne sur les exécutions normales.

Cependant, chaque fois que je lance des tests JUnit4, je suis spammé par des pages de sortie DEBUG comme ceci:

....
17:43:20.500 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
17:43:20.500 [main] DEBUG org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader - Registered bean definition for imported class 'org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration$JacksonObjectMapperConfiguration'
17:43:20.501 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'org.springframework.boot.autoconfigure.condition.BeanTypeRegistry'
17:43:20.502 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'autoConfigurationReport'
....

Tout ce spam rend presque impossible de voir les parties réellement pertinentes. Comment puis-je appliquer les niveaux de journalisation pour tester la sortie?

Je n'ai pas défini explicitement de journalisation, et selon la documentation, Logback est utilisé par défaut.

8

D'un point de vue général, vous pouvez fournir un _ logback-test.xml- fichier au niveau de la ressource de test. Dans ce fichier, vous pouvez ajouter des paramètres concernant le niveau de journalisation ciblé sur la sortie que vous souhaitez, tels que:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

  <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern>
    </layout>
  </appender>

  <logger name="com.your.package" level="DEBUG">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.springframework" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.hibernate" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.Eclipse" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="jndi" level="WARN">
    <appender-ref ref="CONSOLE"/>
  </logger>

  <logger name="org.Apache.http.wire" level="WARN">
      <appender-ref ref="CONSOLE"/>
  </logger>

  <root level="DEBUG">
      <appender-ref ref="CONSOLE"/>
  </root>

</configuration>

J'espère que cela vous aide quelque peu sur la voie de la diminution de la sortie du journal. Plus est documenté sur la propre page de logback:

https://logback.qos.ch/manual/configuration.html

Son mentionné dans la section supérieure:

Commençons par discuter des étapes d'initialisation que la déconnexion suit pour essayer de se configurer: 1. Logback essaie de trouver un fichier appelé logback-test.xml dans le chemin de classe.

2.Si aucun fichier de ce type n'est trouvé, logback essaie de trouver un fichier appelé logback.groovy dans le chemin de classe.

3.Si aucun fichier de ce type n'est trouvé, il recherche le fichier logback.xml dans le chemin de classe.

4.Si aucun fichier de ce type n'est trouvé, la fonction de chargement du fournisseur de services (introduite dans JDK 1.6) est utilisée pour résoudre la mise en œuvre de l'interface com.qos.logback.classic.spi.Configurator en recherchant le fichier META-INF\services\ch.qos.logback.classic.spi.Configurator dans le chemin de classe. Son contenu doit spécifier le nom de classe complet de l'implémentation du configurateur souhaitée.

5.Si rien de ce qui précède ne réussit, la reconnexion se configure automatiquement à l'aide de BasicConfigurator, ce qui entraînera la sortie de la journalisation vers la console.

14
vegaasen