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
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 ...
cela fonctionne:
java -jar -Dlog4j.configuration="file:d:\log4j.xml" myjar.jar
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
avez-vous essayé java -Dlog4j.configuration=/path/to/log4j.xml -jar <rest-of-args>
, 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());
}
}
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.
"- 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.
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 .
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.