419 votes

Aucun appender n'a pu être trouvé pour logger(log4j) ?

J'ai mis log4j dans mon buildpath, mais j'obtiens le message suivant lorsque je lance mon application :

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

Que signifient ces avertissements ? Quel est l'appender ici ?

5 votes

Cela semble être un avertissement d'exécution. Êtes-vous sûr de le voir lorsque vous compilez ?

5 votes

Avez-vous essayé de visiter l'URL figurant dans la dernière ligne des avertissements ?

4 votes

Oui !!! mais ça ne dit pas grand chose... J'ai découvert que j'ai besoin d'un fichier de propriété pour configurer mon appender !

519voto

maba Points 15744

Este Brève introduction à log4j Le guide est un peu ancien mais toujours valable.

Ce guide vous donnera des informations sur la façon d'utiliser les enregistreurs et les appenders.


Pour commencer, vous pouvez adopter deux approches simples.

La première consiste à ajouter cette ligne à votre méthode principale :

BasicConfigurator.configure();

La deuxième approche consiste à ajouter cette norme log4j.properties (extrait du guide mentionné ci-dessus) à votre classpath :

# 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

4 votes

Le premier pas suffit. Citation du guide "Short introduction to log4j

86 votes

Pour les nouveaux venus... ajoutez le fichier log4j.properties à src/main/resources, en supposant que vous avez un projet maven. Les éléments de src/main/resources sont inclus dans le classpath.

5 votes

Dans l'idée IntelliJ, ouvrez la configuration du module et sélectionnez votre dossier de ressources et cliquez sur ressources, il ajoutera automatiquement toutes vos ressources au classpath.

78voto

JDJ Points 1194

Il semble que vous deviez ajouter l'emplacement de votre log4j.properties au Classpath dans Eclipse.

Assurez-vous que votre projet est ouvert dans Eclipse, puis cliquez sur le menu "Run" en haut d'Eclipse et cliquez sur ce qui suit :

  1. Exécuter
  2. Configurations d'exécution
  3. Chemin de classe (onglet)
  4. Entrées des utilisateurs
  5. Avancé (bouton à droite)
  6. Ajouter des dossiers
  7. puis naviguez vers le dossier qui contient votre fichier log4j.properties
  8. Appliquer
  9. Exécuter

Le message d'erreur ne devrait plus apparaître.

0 votes

Les messages d'avertissement n'apparaissent plus maintenant mais les journaux ne sont toujours pas écrits à l'endroit désiré.

52voto

lancerex Points 68

Solution rapide :

  1. ajouter un code à fonction principale :

    String log4jConfPath = "/path/to/log4j.properties";
    PropertyConfigurator.configure(log4jConfPath);
  2. créer un fichier nommé log4j.properties à l'adresse /chemin/vers

    log4j.rootLogger=INFO, stdout
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{2}: %m%n

0 votes

Placez le fichier log4j.properties dans le répertoire des ressources comme src/test/resource.

0 votes

Pour éviter la déclaration explicite du chemin d'accès à log4j.properties, placez-le dans le dossier de votre projet et accédez-y comme suit String log4jConfPath = System.getProperty("user.dir")+File.separator+"log4j.properties" ;

7voto

Simulant Points 4329

Vous utilisez le Logger dans votre code pour enregistrer un message. Le site Appender est un objet ajouté à un Logger pour écrire le message à une cible spécifique. Il existe FileAppender pour écrire dans des fichiers texte ou dans le ConsoleAppender pour écrire dans la Console. Vous devez montrer votre code de la configuration du Logger et de l'Appender pour plus d'aide.

veuillez lire le tutoriel pour mieux comprendre l'interaction entre Logger et Appender.

5voto

a3po2.0 Points 11

Je reçois la même erreur. Voici le problème qui conduit à ce message d'erreur :

Je crée quelques objets qui utilisent le Logger avant de configurer le log4j :

Logger.getLogger(Lang.class.getName()).debug("Loading language: " + filename);

Solution : Configurez le log4j au début dans la méthode main :

PropertyConfigurator.configure(xmlLog4JConfigFile); 
// or BasicConfigurator.configure(); if you dont have a config file

0 votes

Merci beaucoup ! !! Tout le monde suppose que Spring ou Tomcat, ou autre, initialisent la configuration.

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