66 votes

Comment configurer log4j.properties pour SpringJUnit4ClassRunner?

Tout à coup, cela continue pendant un test JUnit. Tout fonctionnait bien, j'ai écrit de nouveaux tests et cette erreur est survenue. Si je le retourne, ça ne partira pas. Pourquoi donc?

 log4j:WARN No appenders could be found for logger (org.springframework.test.context.junit4.SpringJUnit4ClassRunner).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
 

72voto

Axel Fontaine Points 8614

Les nouveaux tests que vous avez écrit (directement ou indirectement) d'utiliser des classes qui se connectent à l'aide de Log4j.

Log4J doit être configuré pour cet enregistrement pour fonctionner correctement.

Mettre un log4j.propriétés (ou log4j.xml fichier dans la racine de votre test classpath.

Il doit avoir une configuration de base tels que

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

# An alternative logging format:
# log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n

Un appender sorties de la console par défaut, mais vous pouvez également définir explicitement la cible comme ceci:

log4j.appender.A1.Target=System.out

Cela permettra de rediriger toutes les sorties dans un format idéal pour la console. Plus d'informations peuvent être trouvées ici dans le Log4J manuel,

Log4J Journalisation sera alors configuré correctement et cela disparaîtra.

48voto

tster Points 9948

Si vous ne voulez pas vous embêter avec un fichier, vous pouvez faire quelque chose comme ceci dans votre code:

 static
{
    Logger rootLogger = Logger.getRootLogger();
    rootLogger.setLevel(Level.INFO);
    rootLogger.addAppender(new ConsoleAppender(
               new PatternLayout("%-6r [%p] %c - %m%n")));
}
 

8voto

Arun P Johny Points 151748

Ajoutez un fichier log4j.properties (log4j.xml) avec au moins un appender à la racine de votre chemin de classe.

Le contenu du fichier (log4j.properties) peut être aussi simple que

 log4j.rootLogger=WARN,A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c %x - %m%n
 

Cela activera la journalisation log4j avec le niveau de journalisation par défaut en tant que WARN et utilisera la console Java pour consigner les messages.

4voto

Tomas Points 4691

J'ai le log4j.properties configuré correctement. Ce n'est pas le problème. Après un certain temps, j'ai découvert que le problème était lié à Eclipse IDE, qui avait une ancienne construction en "cache" et n'en avait pas créé une nouvelle (problème de dépendance Maven). Je devais construire le projet manuellement et maintenant cela fonctionne.

3voto

Manu Mukerji Points 195

J'utilisais Maven dans Eclipse et je ne voulais pas avoir une copie supplémentaire du fichier de propriétés dans le dossier racine. Vous pouvez effectuer les opérations suivantes dans Eclipse:

  1. Ouvrir la boîte de dialogue d'exécution (cliquez sur la petite flèche à côté du bouton de lecture et accédez aux configurations d'exécution)
  2. Aller sur l'onglet "classpath"
  3. Sélectionnez les "entrées d'utilisateur" et cliquez sur le bouton "Avancé" sur le côté droit.
  4. Sélectionnez maintenant le bouton radio "Ajouter un dossier externe".
  5. Sélectionnez le dossier de ressources

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X