J'ai écrit un projet de service Web en utilisant netbeans 6.7.1 avec glassfish v2.1, mis log4j.properties dans le répertoire racine du projet et utilisez:
static Logger logger = Logger.getLogger(MyClass.class);
dans Constructor:
PropertyConfigurator.configure("log4j.properties");
et dans les fonctions:
logger.info("...");
logger.error("...");
// ...
mais, c'est une information d'erreur (en fait, j'ai essayé de le mettre presque tous les répertoires que je pouvais réaliser):
log4j:ERROR Could not read configuration file [log4j.properties].
java.io.FileNotFoundException: log4j.properties (The system cannot find the file specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:297)
at org.apache.log4j.PropertyConfigurator.configure(PropertyConfigurator.java:315)
at com.corp.ors.demo.OrsDemo.main(OrisDemo.java:228)
log4j:ERROR Ignoring configuration file [log4j.properties].
log4j:WARN No appenders could be found for logger (com.corp.ors.demo.OrsDemo).
log4j:WARN Please initialize the log4j system properly.
l'exemple de projet peut être obtenu à partir de http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8
Réponses:
Je sais qu'il est un peu tard pour répondre à cette question, et peut-être que vous avez déjà trouvé la solution, mais je poste la solution que j'ai trouvée (après avoir beaucoup cherché sur Google) donc cela peut aider un peu:
-Dlog4j.debug
@ la fin de vos options java de tomcatJ'espère que cela aidera.
rgds
la source
Comme déjà indiqué, log4j.properties doit être dans un répertoire inclus dans le classpath, je veux ajouter que dans un projet mavenized, un bon endroit peut être
src/main/resources/log4j.properties
la source
Vous pouvez spécifier l'emplacement du fichier de configuration avec l'argument VM -Dlog4j.configuration = "file: / C: /workspace3/local/log4j.properties"
la source
log4j.configurationFile
Vous devez le mettre dans le répertoire racine, qui correspond à votre contexte d'exécution.
Exemple:
Si vous commencez à exécuter à partir d'un autre projet, vous devez avoir ce fichier dans le projet utilisé pour démarrer l'exécution. Par exemple, si un projet différent contient des tests JUnit, il doit également avoir son fichier log4j.properties.
Je suggère d'utiliser log4j.xml au lieu de log4j.properties. Vous avez plus d'options, obtenez de l'aide de votre IDE et ainsi de suite ...
la source
Pour un projet basé sur Maven, conservez votre log4j.properties dans src / main / resources. Rien d'autre a faire!
la source
Si vous mettez log4j.properties dans src, vous n'avez pas besoin d'utiliser l'instruction -
Il sera pris automatiquement car le fichier de propriétés est dans le chemin de classe.
la source
Essayer:
la source
Le fichier doit se trouver dans le répertoire WEB-INF / classes. Cette structure de répertoires doit être intégrée au fichier war.
la source
Mon IDE est NetBeans. J'ai mis le fichier log4j.property comme indiqué dans les images
Racine
la toile
WEB-INF
Pour utiliser ce fichier de propriétés, vous devez écrire ce code:
Vous pouvez définir un contexte ServletContext statique à partir d'un autre fichier JSP. Exemple:
Vous pouvez maintenant utiliser le fichier log4j.property dans vos projets.
la source
Quelques réponses spécifiques techniquement correctes déjà fournies mais en général, cela peut être n'importe où sur le chemin des classes d'exécution, c'est-à-dire partout où les classes sont recherchées par la JVM.
Cela peut être le répertoire / src dans Eclipse ou le répertoire WEB-INF / classes dans votre application déployée, mais il est préférable de connaître le concept de chemin de classe et la raison pour laquelle le fichier y est placé, ne traitez pas seulement WEB-INF / classes comme un répertoire "magique".
la source
J'ai passé beaucoup de temps à comprendre pourquoi le fichier log4j.properties n'est pas visible.
Ensuite, j'ai remarqué qu'il n'était visible pour le projet que lorsqu'il se trouvait dans les dossiers MyProject / target / classes / et MyProject / src / main / resources .
J'espère que ça sera utile à quelqu'un.
PS: Le projet était basé sur des maven.
la source
J'ai trouvé que Glassfish par défaut recherche [emplacement d'installation de Glassfish] \ glassfish \ domaines [votre domaine] \ comme répertoire de travail par défaut ... vous pouvez déposer le fichier log4j.properties à cet emplacement et l'initialiser dans votre code à l'aide de PropertyConfigurator comme mentionné précédemment...
la source
Je ne sais pas que c'est la bonne manière, mais cela a résolu mon problème. placez le fichier log4j.properties dans "dossier de projet" / config et utilisez PropertyConfigurator.configure ("config // log4j.properties");
cela fonctionnera avec IDE mais pas lorsque vous exécuterez vous-même le fichier jar. lorsque vous exécutez le fichier jar vous-même, copiez simplement le fichier log4j.properties dans le dossier dans lequel se trouve le fichier jar.
la source
Mettez log4j.properties dans classpath. Voici les 2 cas qui vous aideront à identifier l'emplacement approprié: 1. Pour les applications Web, le chemin d'accès aux classes est / WEB-INF / classes.
Pour tester à partir du test principal / unitaire, le chemin de classe est le répertoire source
la source
Il y a plusieurs façons de le faire:
Way1: Si vous essayez dans un projet maven sans utiliser PropertyConfigurator
Premièrement: vérifiez le répertoire des ressources dans scr / main
suit la capture d'écran:
Way2: Si vous essayez avec le fichier de propriétés pour le projet java / maven, utilisez PropertyConfigurator
Placez le fichier de propriétés n'importe où dans le projet et indiquez le chemin correct. dire: src / javaLog4jProperties / log4j.properties
statique{
}
Way3: Si vous essayez avec xml sur un projet java / maven, utilisez DOMConfigurator
Placez le fichier de propriétés n'importe où dans le projet et indiquez le chemin correct. dire: src / javaLog4jProperties / log4j.xml
statique{
}
la source
La configuration de votre projet standard aura une structure de projet semblable à:
Vous placez log4j.properties dans le dossier des ressources, vous pouvez créer le dossier des ressources s'il n'en existe pas
la source
En fait, je viens de rencontrer ce problème dans une structure de projet Java standard comme suit:
Dans Eclipse, je dois ajouter le dossier res pour construire le chemin, cependant, dans Intellij, je dois marquer le dossier res comme ressources comme le montre la capture d'écran liée: cliquez avec le bouton droit sur le dossier res et marquez comme ressources .
la source
Vous n'avez pas besoin de spécifier
PropertyConfigurator.configure("log4j.properties");
dans votre classe Log4J, si vous avez déjà défini le log4j.properties dans la structure de votre projet.En cas de projet dynamique Web: -
Vous devez enregistrer votre log4j.properties sous WebContent -> WEB-INF -> log4j.properties
J'espère que cela peut vous aider.
la source