59 votes

Changer l'emplacement de log4j.properties

Je veux mettre tous mes fichiers de configuration dans un sous-dossier /config de mon répertoire d'application. Log4j attend le fichier log4j.properties dans le dossier racine de mon application. Existe-t-il un moyen de dire à log4j où rechercher le fichier de propriétés ?

76voto

Alexander Pogrebnyak Points 24964

Oui, définissez la propriété log4j.configuration

 java -Dlog4j.configuration=file:/path/to/log4j.properties myApp

Notez que cette valeur de propriété doit être une URL.

Pour plus d'informations, lisez la section « Procédure d'initialisation par défaut » dans le manuel Log4j .

34voto

Buhake Sindi Points 38654

Vous pouvez utiliser PropertyConfigurator pour charger votre log4j.properties où qu'il se trouve sur le disque.

Exemple:

 Logger logger = Logger.getLogger(this.getClass());
String log4JPropertyFile = "C:/this/is/my/config/path/log4j.properties";
Properties p = new Properties();

try {
    p.load(new FileInputStream(log4JPropertyFile));
    PropertyConfigurator.configure(p);
    logger.info("Wow! I'm configured!");
} catch (IOException e) {
    //DAMN! I'm not....

}

Si vous avez une configuration XML Log4J, utilisez plutôt DOMConfigurator.

4voto

Suraj Chandran Points 12859

Utilisez le PropertyConfigurator : PropertyConfigurator.configure(configFileUrl);

2voto

Borat Sagdiyev Points 1101

Référez-vous à cet exemple tiré de - http://www.dzone.com/tutorials/java/log4j/sample-log4j-properties-file-configuration-1.html

 import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class HelloWorld {

    static final Logger logger = Logger.getLogger(HelloWorld.class);
    static final String path = "src/resources/log4j.properties";

    public static void main(String[] args) {

        PropertyConfigurator.configure(path);
        logger.debug("Sample debug message");
        logger.info("Sample info message");
        logger.warn("Sample warn message");
        logger.error("Sample error message");
        logger.fatal("Sample fatal message");
    }
}

Pour changer les niveaux de l'enregistreur - Logger.getRootLogger().setLevel(Level.INFO);

0voto

pankaj Points 543

Ceci est ma classe : le chemin est correct et les propriétés sont chargées.

 package com.fiserv.dl.idp.logging;

import java.io.File;
import java.io.FileInputStream;
import java.util.MissingResourceException;
import java.util.Properties;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

public class LoggingCapsule {

    private static Logger logger = Logger.getLogger(LoggingCapsule.class);

    public static void info(String message) {


        try {

            String configDir = System.getProperty("config.path");
            if (configDir == null) {
                throw new MissingResourceException("System property: config.path not set", "", "");
            }
            Properties properties = new Properties();
            properties.load(new FileInputStream(configDir + File.separator + "log4j" + ".properties"));
            PropertyConfigurator.configure(properties);
        } catch (Exception e) {
            e.printStackTrace();

        }
        logger.info(message);
    }
    public static void error(String message){
        System.out.println(message);
    }

}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X