J'ai mis log4j dans mon buildpath, mais je reçois le message suivant lorsque j'exécute 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?
Réponses:
Cette courte introduction au guide log4j est un peu ancienne mais toujours valable.
Ce guide vous donnera des informations sur l'utilisation des enregistreurs et des appenders.
Pour vous aider, vous avez deux approches simples à adopter.
La première consiste à simplement ajouter cette ligne à votre méthode principale:
La deuxième approche consiste à ajouter ce
log4j.properties
fichier standard (tiré du guide mentionné ci-dessus) à votre chemin de classe:la source
log4j.rootLogger=DEBUG, A1
est la ligne qui me manquait tout le temps.Il semble que vous devez ajouter l'emplacement de votre
log4j.properties
fichier au chemin de classe dans Eclipse.Assurez-vous que votre projet est ouvert dans Eclipse, puis cliquez sur le menu "Exécuter" en haut d'Eclipse et cliquez sur ce qui suit:
Le message d'erreur ne devrait plus apparaître.
la source
Solution rapide:
ajouter du code à la fonction principale :
créer un fichier nommé log4j.properties dans / path / to
la source
Ceci est juste un avertissement.
Fixation
Cela se produit lorsque les fichiers de configuration par défaut
log4j.properties
etlog4j.xml
ne peut pas être trouvé et l'application N'a pas de configuration explicite.Pour résoudre ce problème, il suffit de créer / copier
log4j.properties
oulog4j.xml
dans votre emplacement sur le chemin de classe (généralement le même que les fichiers jar).En option définir l' option java:
-Dlog4j.configuration=file:///path/to/log4j.properties
.Débogage
Pour le débogage, vous pouvez essayer d'utiliser le
-Dlog4j.debug=true
paramètre.Configuration de
log4j.properties
Exemple de configuration de
log4j.properties
:Voici un autre fichier de configuration qui utilise plusieurs appender:
Apache Solr
Si vous utilisez Solr , copiez-le
<solr>/example/resources/log4j.properties
dans un emplacement sur le chemin de classe .Voici un exemple de configuration de
log4j.properties
Solr:Voir également:
la source
La plupart des réponses ici suggèrent que le
log4j.properties
fichier soit placé au bon endroit (pour le projet maven, il devrait être situé danssrc/main/resources
)Mais pour moi, le problème est que mon
log4j.properties
n'est pas correctement configuré. Voici un échantillon qui fonctionne pour moi, vous pouvez l'essayer en premier.la source
Comme expliqué précédemment, il existe 2 approches
La première consiste à simplement ajouter cette ligne à votre méthode principale:
La deuxième approche consiste à ajouter ce log4j.properties standard fichier à votre :
Tout en adoptant la deuxième approche, vous devez vous assurer d'initialiser correctement le fichier, par exemple.
Assurez-vous de créer le dossier requis pour stocker les fichiers journaux.
la source
Vous utilisez le
Logger
dans votre code pour enregistrer un message. LeAppender
est un objet en annexe àLogger
écrire le message à une cible spécifique. Il y aFileAppender
à écrire dans des fichiers texte ouConsoleAppender
à écrire dans la console. Vous devez montrer votre code de configuration du Logger et Appender pour plus d'aide.veuillez lire le tutoriel pour une meilleure compréhension de l'interaction de Logger et Appender.
la source
Assurez-vous que le fichier de propriétés est correctement défini. Et encore une fois, il semble que le compilateur ne trouve pas le fichier de propriétés, vous pouvez définir comme suit sur le pom (uniquement lorsque vous utilisez le projet maven).
la source
J'ai la même erreur. Voici le problème qui conduit à ce message d'erreur:
Je crée des objets qui utilisent le Logger avant de configurer le log4j:
Solution: configurez log4j au début dans la méthode principale:
la source
Je pense que vous devez comprendre où le fichier jar log4j ou le code Java recherche les fichiers de configuration log4j.
src/main/resources/log4j.properties
est le chemin Eclipse. Placez-les dans un emplacement approprié afin de ne pas avoir à coder en dur le chemin absolu dans le code.Lisez mon article et un exemple de solution pour cela http://askyourquestions.info/2016/03/27/how-to-see-where-the-log-is-logger-in-slf4j/
la source
Une autre raison pour laquelle cela peut se produire (dans RCP4) est que vous utilisez plusieurs infrastructures de journalisation dans votre fichier cible. Par exemple, cela se produit si vous utilisez une combinaison de slf4j, log4j et ch.qos.logback.slf4j dans l'onglet de contenu de vos fichiers cible.
la source
Ajoutez ce qui suit comme premier code:
la source
Dans mon cas, l'erreur était l'indicateur " additivité ". S'il est "faux" pour votre package de projet racine, les packages enfants n'auront pas d'appendice et vous verrez l' erreur " appender not found ".
la source
J'ai rencontré le même problème lorsque j'ai essayé d'exécuter la classe de test JUnit.
Le problème est résolu après avoir ajouté manuellement le fichier log4j.properties dans le dossier src / test / resources.
L'ajout du code ci-dessous au fichier log4j.properties a résolu le problème:
la source
J'ai rencontré ce problème en essayant de créer un fichier exécutable avec maven dans intellij 12. Il s'est avéré que, parce que le fichier manifeste java n'incluait pas de chemin de classe, le fichier de propriétés log4j était introuvable au niveau racine (où le le fichier jar a été exécuté depuis.)
Pour info, je recevais l'enregistreur comme ceci:
Et j'ai pu le faire fonctionner avec un fichier pom qui comprenait ceci:
la source
Assurez-vous que votre projet est ouvert dans Eclipse, puis cliquez sur le menu "Exécuter" en haut d'Eclipse et cliquez sur ce qui suit:
Courir
Exécuter les configurations
Chemin de classe (onglet)
Entrées utilisateur
ajouter le pot à droite
ajouter un fichier jar log4j
Appliquer
Courir
Le message d'erreur ne devrait plus apparaître.
la source
La raison peut être le manque de mot
static
dans certains:Si je fais enregistrer le champ d'instance, je reçois exactement cet avertissement:
Pire encore, l'avertissement ne pointe pas vers le
ProcessorTest
lieu de l'erreur, mais vers une classe absolument différente (l'expéditeur) comme source de problèmes. Cette classe a un enregistreur de jeu correct et n'a besoin d'aucune modification! Nous pourrions chercher le problème depuis des lustres!la source
J'ai rencontré le même problème lorsque j'utilise log4j2. Mon problème est dû à une mauvaise bibliothèque dépendante:
Au lieu de cela, je devrais utiliser:
Dans mon cas, j'ai un log4j2.xml défini dans mon répertoire "resources", et spécifié pour l'utiliser par:
la source
Log4J affiche ce message d'avertissement lorsque le code Java Log4j cherche à créer une première ligne de journal dans votre programme.
En ce moment, Log4j fait 2 choses
log4j.properties
fichierlog4j.properties
Si
log4J
ne trouve pas lelog4j.properties
fichier ou si l'appender déclaré danslog4j.rootlogger
n'est pas défini ailleurs danslog4j.properties
fichier, le message d'avertissement s'affiche.ATTENTION: le contenu du fichier de propriétés doit être correct.
Le contenu suivant n'est PAS correct
car
file
appender est déclaré dans LOWER-CASE dans l'log4j.rootlogger
instruction et défini dans l'instruction log4j.appender à l'aide de UPPER-CASE!Un fichier correct serait
Si MAVEN est utilisé, vous devez placer les fichiers log4j.properties dans
src/main/resources
ET démarrer une génération MAVEN.Le fichier Log4j.properties est ensuite copié dans le
target/classes
dossier.Log4J utilise le
log4j.properties
fichier qu'il a trouvétarget/classes
!la source
J'ai eu ce problème également. J'ai juste oublié de marquer le répertoire des ressources dans IntelliJ IDEA
la source
Si vous utilisez Eclipse et que ce problème est apparu de nulle part après que tout a bien fonctionné au préalable, essayez d'y aller
Project - Clean - Clean
.la source
Mon installation Eclipse n'a pas pu être trouvée
log4j.properties
lors de l'exécution des tests JUnit à partir d'Eclipse, même si le fichier se trouvait àsrc/test/resources
.La raison en était qu'Eclipse (ou le connecteur m2e ) n'a pas copié le contenu du
src/test/resources
dossier de sortie attendutarget/test-classes
- la cause principale était que dans les propriétés du projet sous Java Build Path -> onglet Source -> Dossiers source sur le chemin de génération -> src / test / ressources , il y avait en quelque sorte uneExcluded: **
entrée. J'ai supprimé cette entrée exclue .Sinon, je pourrais avoir copié manuellement
src/test/resources/log4j.properties
àtarget/test-classes/log4j.properties
.la source
Si
log4j.properties
est en effet sur le chemin de classe, vous utilisez Spring Boot pour créer un fichier WAR à déployer sur un serveur d'applications, vous omettez unweb.xml
fichier en faveur de la configuration automatique de Spring Boot et vous n'obtenez aucun message de journal, vous devez explicitement configurer Log4j. En supposant que vous utilisez Log4j 1.2.x:la source
Peut-être que le projet pertinent contient log4j dans le chemin de génération java, j'ajoute mahout_h2o lorsque j'ai rencontré ce problème dans un projet mahout utilisant eclipse, cela fonctionne!
la source
si vous travaillez avec de nombreux projets, vous risquez de rencontrer un problème de style.
* vous devez avoir un fichier lof4j.properties et ce fichier est inclus dans les propriétés du journal d'un autre projet.
* À côté, vous pouvez essayer de mettre les fichiers de propriétés log4j dans le chemin src lorsque le projet est travaillé.
la source
Première importation:
Ajoutez ensuite le code ci-dessous à la méthode principale:
Créez un fichier au chemin d'accès et ajoutez le code ci-dessous à ce fichier.
la source
La solution sur ce site a fonctionné pour moi https://crunchify.com/java-how-to-configure-log4j-logger-property-correctly/ . Je ne vois plus aucun avertissement de log4j
Je mets cela dans un fichier log4j.properties que je mets dans src / main / resources
la source
Tout d'abord: créez un fichier log4j.properties
Placez-le dans src / main / resources /
Après cela, utilisez ces 2 dépendances:
Il est nécessaire d'ajouter cette dépendance finale au fichier POM:
la source
Considérez l'argument JVM log4j Dlog4j.configuration
En général:
Ajoutez l'argument JVM qui indique le fichier de configuration log4j. La syntaxe est la suivante:
Un exemple de ligne de commande réelle est semblable à ce qui suit:
Pour les utilisateurs IntelliJ IDE:
Conseils:
Les utilisateurs d'IDE Eclipse trouveront une approche équivalente
Pour l'éditeur de configuration d'exécution / débogage, il est très probable qu'au début des temps, votre fichier exécutable particulier ne soit pas là. Selon la taille du projet sur lequel vous travaillez actuellement, il peut être désagréable de parcourir les répertoires pour le trouver. C'est moins compliqué si vous exécutez / exécutez simplement le fichier (cliquez sur lecture) une fois avant de lancer la configuration / débogage, quel que soit le résultat de l'exécution.
3.Faites attention à votre répertoire de travail, aux chemins relatifs et au chemin de classe.
la source
Pour moi, la raison était apparemment différente et le message d'erreur trompeur.
Avec juste cela dans mon build.gradle, il se plaindrait que slf4j était manquant au début du journal, mais enregistre toujours les choses, bien que dans un format médiocre:
L'ajout de cette dépendance entraînerait pour moi le message d'erreur "Aucun appender n'a été trouvé", même si je les avais définis dans
src/main/java/log4j.properties
:Enfin, l'ajout de la dépendance suivante (que j'ai seulement deviné en la copiant dans un autre projet) a résolu le problème:
Je ne sais pas pourquoi, mais avec ça ça marche. Avez-vous des idées à ce sujet?
la source