Chargement du fichier log4j2.xml à partir du même répertoire que le fichier jar
Question
J'ai un répertoire /release/ contenant mon application.jar ainsi que le fichier log4j2.xml.Lorsque j'exécute l'application avec java -jar application.jar
il ne récupérera pas le fichier de configuration log4j2.xml.Cela fonctionne si je spécifie explicitement l'emplacement du fichier XML comme ceci
java -Dlog4j.configurationFile=log4j2.xml -jar application.jar
Existe-t-il un moyen de demander à mon programme de toujours récupérer le fichier de configuration dans le même répertoire que celui dans lequel réside le fichier jar ?Je souhaite garder le programme aussi simple que possible et ne pas obliger l'utilisateur à définir une propriété système gênante lors de l'exécution de l'application.
La solution
Sans la propriété système, log4j-2.0 recherchera un fichier log4j2.xml dans le chemin de classe.Je lis donc votre question comme suit :comment puis-je démarrer mon application avec java -jar application.jar
et avez-vous le fichier log4j2.xml dans le chemin de classe ?
Cela dépend si votre fichier application.jar possède un Class-Path
entrée dans son manifeste (http://docs.oracle.com/javase/8/docs/technotes/tools/windows/findingclasses.html#sthref8 ).
Vous pouvez bien sûr simplement inclure le fichier log4j2.xml dans le fichier application.jar.Si vous souhaitez éviter cela, vous pouvez ajouter le répertoire contenant le fichier log4j2.xml au Class-Path
entrée dans le manifeste du fichier JAR.(Cela pourrait être le répertoire actuel ".".)