Où dois-je mettre le log4j?le fichier des propriétés?

j'ai écrit un projet de service web en utilisant netbeans 6.7.1 avec glassfish v2.1, Mettez log4j.propriétés à la racine du projet et de l'utilisation:

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

dans constructeur:

PropertyConfigurator.configure("log4j.properties");

et en fonctions:

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

mais, c'est info erreur(en fait, j'ai essayé de le mettre presque tous les dir 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.

le projet exemple pourrait être obtenu de http://www.91files.com/?N3F0QGQPWMDGPBRN0QA8

121
demandé sur Matthew 2009-09-28 12:32:27

15 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é (après que j'ai beaucoup cherché sur Google) ainsi il peut aider un peu:

  1. Put log4j.Propriétés sous WEB-INF\classes du projet comme mentionné précédemment dans ce thread.
  2. Put log4j-xx.jar sous WEB-INF\lib
  3. tester si log4j a été chargé: ajouter -Dlog4j.debug @ la fin de vos options java de tomcat

Espérons que cela aidera.

rgds

106
répondu miss 2013-04-05 15:18:48

As already stated, log4j.propriétés doivent ê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

36
répondu stivlo 2012-01-09 14:42:20

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 commencer à 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 quelques tests JUnit, il doit aussi avoir son log4j.fichier de propriétés.


je suggère d'utiliser log4j.xml au lieu de cela de la log4j.les propriétés. Vous avez plus d'options, obtenez de l'aide de votre IDE et ainsi de suite...

25
répondu KLE 2009-09-28 08:38:20

vous pouvez spécifier l'emplacement du fichier de configuration avec l'argument VM-Dlog4j.configuration= " file:/C:/workspace3/local / log4j.propriétés "

23
répondu Makatun 2010-03-05 19:46:25

pour un projet basé sur le Maven, gardez votre log4j.propriétés dans src/main / resources. Rien d'autre à faire!

13
répondu Byorn 2014-09-30 11:40:50

si vous mettez log4j.propriétés à l'intérieur de src, vous n'avez pas besoin d'utiliser la déclaration -

PropertyConfigurator.configure("log4j.properties");

il sera pris automatiquement car le fichier de propriétés se trouve dans classpath.

12
répondu Ani 2012-07-08 21:55:38

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

9
répondu Martin OConnor 2009-09-28 11:55:11

, Essayez:

PropertyConfigurator.configure(getClass().getResource("/controlador/log4j.properties"));
9
répondu Jhon M 2011-12-15 17:25:15

mon IDE est NetBeans. J'ai mis log4j.fichier de propriétés comme montré sur les photos

Root

project's root folder

Web

web folder

WEB-INF

WEB-INF folder

pour utiliser ce fichier de propriété 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() {

        String homeDir = context.getRealPath("/");
        File propertiesFile = new File(homeDir, "WEB-INF/log4j.properties");
        PropertyConfigurator.configure(propertiesFile.toString());
        log.info("This is a test");
    }
}

vous pouvez définir contexte servlettexte statique à partir d'un autre fichier JSP. Exemple:

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

Maintenant vous pouvez utiliser log4j.dossier de propriété dans vos projets.

6
répondu Ali Mamedov 2011-10-07 05:37:17

quelques réponses spécifiques techniquement correctes déjà fournies, mais en général, il peut être n'importe où sur le chemin de la classe runtime, 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 dans votre application déployée, mais il est préférable d'être conscient du concept classpath et de la raison pour laquelle le fichier y est placé, ne traitez pas simplement WEB-INF/classes comme un répertoire" magique".

5
répondu Brian 2010-03-05 19:51:32

j'ai passé beaucoup de temps à comprendre pourquoi le log4j.propriétés fichier n'est pas vu.

Puis j'ai remarqué qu'il était visible pour le projet seulement quand il était dans les deux répertoires MyProject/target/classes/ et MyProject/src/main/resources .

Espérons qu'il sera utile à quelqu'un.

PS: le projet était basé sur le maven.

5
répondu RedCH 2014-08-13 09:43:49

j'ai trouvé que Glassfish par défaut est de regarder [Glassfish emplacement d'installation]\glassfish\domains[votre domaine]\ le répertoire de travail par défaut... vous pouvez laisser tomber le log4j.propriétés fichier dans cet emplacement et l'initialiser dans votre code en utilisant 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");
2
répondu Durandal00 2014-01-07 13:31:14

Je ne sais pas si c'est la bonne façon.Mais il a résolu mon problème. mettez log4j.fichier de propriétés dans "project folder" / config et utiliser PropertyConfigurator.configure ("config//log4j.propriétés");

il fonctionnera avec IDE mais pas quand lancer le fichier jar vous-même. lorsque vous exécutez le fichier jar par vous-même, copiez simplement le log4j.propriétés fichier dans le dossier que le fichier jar est.quand le bocal et bien le fichier dans le même répertoire, il fonctionne bien.

1
répondu sampathpremarathna 2011-04-05 06:32:53

Put log4j.propriétés de classepath. Voici les 2 cas qui vous aidera à déterminer le bon emplacement- 1. Pour les applications web, classpath est / WEB-INF / classes.

\WEB-INF      
    classes\
        log4j.properties
  1. pour tester à partir de l'essai principal / unitaire le chemin de classe est le répertoire des sources

    \Project\
       src\
          log4j.properties
    
1
répondu Sharif 2017-10-11 10:30:17

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

projet/src/main/resources

IntelliJ - propriétés log4j emplacement

1
répondu Robert Squire 2018-03-28 12:50:11