Log4j ne trouve pas de fichier de propriétés dans une application simple
J'ai une application très simple qui illustre la fonction de journalisation. Je utiliser log4j. Mais j'ai quelques problèmes avec les paramètres. J'ai téléchargé le fichier log4j-1.2.16.jar. Et le connecter à mon projet par Propriétés -> Java Build Path -> Bibliothèques -> Add External JARs.... Voici ma classe:
package ru.log4j.log4jhelloworld;
import org.apache.log4j.Logger;
public class MyClass {
private static final Logger logger = Logger.getLogger(MyClass.class);
public static void main(String[] args) {
logger.info("Hello World!");
}
}
Mon log4j.xml:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="aa %p %c: %m%n"/>
</layout>
</appender>
<!--Root logger-->
<root>
<priority value ="debug" />
<appender-ref ref="console" />
</root>
</log4j:configuration>
Et mon log4j.propriétés:
log4j.rootCategory=DEBUG, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern= %p %c: %m%n
Dans la console affiche ces exceptions:
log4j:WARN No appenders could be found for logger (ru.log4j.log4jhelloworld.MyClass).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Je ne sais pas comment j'étais censé créer et se connecter à d'autres fichiers de prise en charge, tels que log4j.xml et log4j.propriétés. Et assurez-vous qu'ils ont besoin? Dans ce répertoire qu'ils doivent être situés? Que dois-je encore m'inscrire? Voici mon projet de structure
.
Je suppose que l'erreur dans ce. Quel est mon problème? Aider moi s'il vous plaît!
- Essayez de placer les propriétés du fichier / fichier xml dans le répertoire de racine au lieu de le placer dans le colis, ru.log4j.log4jhelloworld. Je suis également nouveau sur journal de 4j , mais en regardant votre xml et les propriétés , je sens l'un d'entre eux est assez bonne , de sorte que vous pouvez supprimer, et d'essayer
- double possible de log4j.xml le placement des fichiers
Vous devez vous connecter pour publier un commentaire.
Pour résoudre votre problème placez votre fichier de configuration log4j(c'est à dire
log4j.xml
oulog4j.properties
) dans lesrc
dossier et il devrait fonctionner correctement.En outre, vous n'avez pas besoin de deux fichiers(
log4j.xml
etlog4j.properties
), il suffit d'utiliser l'un d'eux.Le problème est que le système enregistreur ne peut pas trouver le fichier de config. Pour corriger cela, vous avez plusieurs options:
Si vous avez besoin de garder un enregistreur de config à l'extérieur de votre package de classes (dont vous faites habituellement dans réel du système de production), puis
/etc/my_great_app/log4j.xml
)-Dlog4j.configuration=<path log4j config>
par exemple
-Dlog4j.configuration=file:///etc/my_great_app/log4j.xml
Notez que le chemin d'accès doit inclure le préfixe
file://
.Si vous souhaitez garder votre configuration log4j avec votre code (ce qui est typique pour les tests unitaires), puis tout ce que vous devez faire - assurez-vous juste que log4 config emplacement fait partie du classpath. Par exemple, si vous utilisez maven, juste stocker vos
log4j.properties
danssrc/main/resources
répertoireConcernant la différence entre
log4j.properties
vslog4j.xml
. Ils sont juste 2 différentes manières de définir la configuration de log4j enregistreur. Vous n'avez pas besoin de deux fichiers, il suffit de décider quel format vous aimez le plus et de les utiliser 🙂Exécuter l'application avec l'-Dlog4j.debug VM argument et vous serez invité à l'endroit où log4j voulez qu'il soit.
J'ai eu le même problème. Et résolu en mettant les lignes suivantes dans Exécuter en tant QU'--> Exécuter les Configurations --> les Arguments onglet
-Dcvp.property.path=/home/local/Project/property/
--> emplacement de votre fichier de propriétéMerci!
Vous pouvez garder votre log4j.fichier de propriétés de n'importe quel emplacement dans votre projet.
Et puis, chargez votre fichier
private static Logger logger = null;
statique {
Système.setProperty("log4j.configurationFile", "C:\Users\jhaas\Workspace_3.0.30\RestClient\conf\log4j.properties");
}
Il est similaire à l'ensemble de la VM argument dans eclipse comme
-Dlog4j.configurationFile=
C:\Users\jhaas\Workspace_3.0.30\RestClient\src\main\resources\log4j.properties
Meilleure approche est de l'avoir dans votre code plutôt que de fixer dans l'éclipse VM argument.