Où dois-je mettre le fichier log4j.properties?

J’ai écrit un projet de service Web utilisant netbeans 6.7.1 avec glassfish v2.1, mis log4j.properties dans le répertoire racine du projet et utilisé:

static Logger logger = Logger.getLogger(MyClass.class); 

dans Constructeur:

 PropertyConfigurator.configure("log4j.properties"); 

et dans les fonctions:

 logger.info("..."); logger.error("..."); // ... 

mais, ce sont des informations 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.(FileInputStream.java:106) at java.io.FileInputStream.(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

Je sais qu’il est un peu tard pour répondre à cette question, et peut-être avez-vous déjà trouvé la solution, mais je poste la solution que j’ai trouvée (après avoir beaucoup consulté Google) pour que cela aide un peu:

  1. Mettez log4j.properties sous WEB-INF \ classes du projet comme mentionné précédemment dans ce thread.
  2. Mettez log4j-xx.jar sous WEB-INF \ lib
  3. Tester si log4j a été chargé: ajoutez -Dlog4j.debug @ la fin de vos options Java de tomcat

J’espère que cela aidera.

rgds

Comme déjà indiqué, log4j.properties devrait se trouver dans un répertoire inclus dans le classpath, je veux append que dans un projet amélioré, src/main/resources/log4j.properties peut être un bon endroit

Vous devez le mettre dans le répertoire racine, qui correspond à votre contexte d’exécution.

Exemple:

  MyProject src MyClass.java log4j.properties 

Si vous commencez à exécuter à partir d’un projet différent, vous devez avoir ce fichier dans le projet utilisé pour lancer 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 EDI, etc.

Vous pouvez spécifier l’emplacement du fichier de configuration avec l’argument VM -Dlog4j.configuration = “file: / C: /workspace3/local/log4j.properties”

Pour un projet basé sur Maven, conservez vos log4j.properties dans src / main / resources. Rien d’autre a faire!

Si vous mettez log4j.properties dans src, vous n’avez pas besoin d’utiliser l’instruction –

 PropertyConfigurator.configure("log4j.properties"); 

Il sera pris automatiquement car le fichier de propriétés est dans le classpath.

Le fichier doit être situé dans le répertoire WEB-INF / classes. Cette structure de répertoire doit être empaquetée dans le fichier war.

Essayer:

 PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties")); 

Mon IDE est NetBeans. Je mets le fichier log4j.property comme indiqué sur les images

Racine

dossier racine du projet

Web

dossier web

WEB-INF

Dossier WEB-INF

Pour utiliser ce fichier de propriétés, vous devez écrire ce code:

 package example; import java.io.File; import org.apache.log4j.PropertyConfigurator; import org.apache.log4j.Logger; import javax.servlet.*; public class test { public static ServletContext context; static Logger log = Logger.getLogger("example/test"); public test() { Ssortingng homeDir = context.getRealPath("/"); File propertiesFile = new File(homeDir, "WEB-INF/log4j.properties"); PropertyConfigurator.configure(propertiesFile.toSsortingng()); log.info("This is a test"); } } 

Vous pouvez définir un contexte ServletContext statique à partir d’un autre fichier JSP. Exemple:

 test.context = getServletContext(); test sample = new test(); 

Vous pouvez maintenant utiliser le fichier log4j.property dans vos projets.

Quelques réponses techniques correctes sur le plan technique sont déjà fournies, mais en général, elles peuvent se trouver 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 pourrait être le répertoire / src dans Eclipse ou le répertoire WEB-INF / classes de votre application déployée, mais il est préférable de connaître le concept de classpath et pourquoi le fichier y est placé. Ne vous contentez pas de traiter WEB-INF / classes comme un répertoire “magique”.

J’ai passé beaucoup de temps à comprendre pourquoi le fichier log4j.properties n’est pas visible.
Ensuite, j’ai remarqué qu’il était visible pour le projet uniquement lorsqu’il se trouvait à la fois dans les dossiers MyProject / target / classes / et MyProject / src / main / resources .
J’espère que ça va être utile à quelqu’un.
PS: Le projet était basé sur maven.

J’ai trouvé que Glassfish par défaut recherche [répertoire d’installation de Glassfish] \ glassfish \ domains [votre domaine] \ comme répertoire de travail par défaut … vous pouvez déposer le fichier log4j.properties à cet emplacement et l’initialiser dans le code à l’aide de PropertyConfigurator comme mentionné précédemment…

 Properties props = System.getProperties(); System.out.println("Current working directory is " + props.getProperty("user.dir")); PropertyConfigurator.configure("log4j.properties"); 

Je ne sais pas si c’est correct. 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 l’IDE mais pas quand exécutez le fichier jar vous-même. Lorsque vous exécutez le fichier JAR vous-même, copiez simplement le fichier log4j.properties dans le dossier contenant le fichier jar. Lorsque le fichier JAR et le fichier de propriétés dans le même répertoire fonctionnent correctement.

Mettez log4j.properties dans classpath. Voici les 2 cas qui vous aideront à identifier l’emplacement approprié. 1. Pour l’application Web, le chemin de classe est / WEB-INF / classes.

 \WEB-INF classes\ log4j.properties 
  1. Pour tester depuis le test main / unit, le classpath est le répertoire source

     \Project\ src\ log4j.properties 

Si vous avez une configuration de projet Maven standard avec Intellij, vous pouvez simplement placer le fichier de propriétés log4j dans:

projet / src / main / ressources

IntelliJ – emplacement des propriétés log4j