Extérieur log4j.xml fichier

j'essaie de courir un pot avec le log4j.xml fichier sur le système de fichiers à l'extérieur de la jarre comme suit:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2

j'ai aussi essayé:

java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2

le log4j.xml le fichier is est dans le même répertoire que le jar (/opt/companyName/pathToJar/), mais j'ai quand même le message d'avertissement standard:

log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle).
log4j:WARN Please initialize the log4j system properly.

est-il possible d'avoir le fichier de configuration à l'extérieur du bocal, ou dois-je l'emballer avec le bocal?

TIA

36
demandé sur javamonkey79 2010-04-07 21:51:43

9 réponses

lorsque vous utilisez le commutateur -jar pour lancer un fichier JAR exécutable, classpath est obtenu à partir du Manifeste du fichier jar. Le commutateur -cp , s'il est fourni, est ignoré.

la réponse de Jeff Storey va être la solution la plus facile. Vous pouvez aussi ajouter un attribut Class-Path au" manifeste du fichier jar .

EDIT Essayez d'activer log4j Débogage, et faire du chemin vers log4j.xml une URL pleinement qualifiée. Par exemple:

java -Dlog4j.debug -Dlog4j.configuration=file:/path/to/log4j.xml -jar ...
48
répondu Jason Day 2017-05-23 12:34:26

cela fonctionne:

java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar
15
répondu tibi 2010-07-13 12:27:59

pour log4j2, utilisez fichier de configuration option:

java -Dlog4j.configurationFile=/path/to/log4j2.xml -jar ...

http://logging.apache.org/log4j/2.0/manual/configuration.html

11
répondu r00tGER 2014-12-12 07:02:39

avez-vous essayé java -Dlog4j.configuration=/path/to/log4j.xml -jar <rest-of-args>

8
répondu Jeff Storey 2010-04-07 17:54:54

, vous pouvez définir un fichier de propriétés par défaut dans le pot. si aucune propriété personnalisée n'est définie, vous pouvez utiliser ce fichier par défaut.si une propriété personnalisée est définie, vous pouvez outrepasser la propriété par défaut.

myjar.le fichier jar contient log4j.default.configuration

vous pouvez lancer votre programme avec ces paramètres pour démarrer votre application""

java  -jar -Dlog4j.configuration=log4j.properties  target\yourfile-v01_000_01_c002.jar

exemple de code

public static void main(String[] args) {
    String filename = System.getProperty("log4j.configuration");
    if(null==filename||filename.trim().equals("")) {
        logger.info("Using default log4j configuration log4j.default.properties.");
        logger.info("If you would like to change the default configuration please add following param before startup -Dlog4j.configuration=<log4jfile>");
        PropertyConfigurator.configure( Main.class.getResourceAsStream("/log4j.default.properties"));
    } else {
        File file = new File(filename);
        if(!file.exists()) System.out.println("It is not possible to load the given log4j properties file :"+file.getAbsolutePath());
        else PropertyConfigurator.configure(file.getAbsolutePath());

    }
}
6
répondu Koray Güclü 2012-08-30 21:54:18

j'ai eu des problèmes avec l'utilisation de log4j avec le JDK de Sun et la configuration automatique.

vous pouvez utiliser ceci:

String filename = System.getProperty("log4j.configuration");
DOMConfigurator(filename);

avant d'utiliser l'Enregistreur.

1
répondu VlatkoB 2011-11-29 09:15:39

"- jar " n'utilise que classpath à l'intérieur de l'exécutable jar, et-cp est ignoré. Additionneur." "dans le chemin de l'exécutable jar doit permettre log4j.xml pour être retrouvée.

0
répondu Thorbjørn Ravn Andersen 2010-04-07 20:02:19

java -cp "chemin/vers/votre/log4jxml:chemin/vers/yourjar.jar" votre.paquet.Classe principale

L'log4j.xml dans le répertoire "chemin/vers/votre/log4jxml" va remplacer la log4j.xml fichier dans "chemin/vers/yourjar.pot."

veuillez vous référer à configuration de plusieurs jarres dans java classpath .

0
répondu Dayong 2017-05-23 12:26:07
"151930920 `la configuration de chemin la plus simple pour "log4j2 is using the bloc statique setting log4j.configurationFile':

public class MyClass {

    static {
        System.setProperty("log4j.configurationFile", "./config/log4j2.xml");
    }

    protected final transient Logger logger =  LogManager.getLogger(IDOLTracker.class);

    public static void main(String[] args) {
         logger.info("");
    }
}

alors la structure pourrait être comme:

ProgramFolder

| - - - - /config / log4j2.xml

/ - - - - MyClass.jar

lorsque vous lancez votre jar, il cherchera le fichier xml à l'extérieur du jar.

0
répondu another 2017-10-08 22:10:42