Lorsque j'ai mis en place un programme qui génère des journaux à l'aide de log4j dans un fichier jar, log4j.xml, qui est le fichier de paramètres log4j, ne s'est pas chargé correctement.
La structure du projet ressemble à ceci.
├ src
└ foo
└ foo.java <=Programme principal
└ resources
└ log4j.xml <=fichier de configuration log4j
Dans le constructeur du programme principal, j'ai lu le fichier de configuration comme suit.
foo.java
import org.apache.log4j.xml.DOMConfigurator;
public class foo {
public foo () {
DOMConfigurator.configure("log4j.xml");
}
}
En spécifiant le nom de fichier log4j.xml
, il sera lu avec succès lors du test sur Eclipse, mais lorsque ce projet est converti en fichier jar et exécuté, il échouera avec une erreur indiquant que le fichier est introuvable.
Lorsque j'ai transformé un projet en fichier jar et que je l'ai appelé à partir d'un autre programme, il semblait qu'il ne pouvait pas être trouvé car il recherchait le fichier log4j.xml
dans le répertoire de démarrage de ce programme.
Par conséquent, au lieu de spécifier uniquement le nom du fichier, spécifiez le chemin absolu vers le fichier.
En réécrivant le constructeur comme suit, vous pouvez spécifier le chemin absolu, et même si vous rassemblez le projet dans un fichier jar, le fichier de paramètres sera bien lu.
foo.java
public foo () {
ClassLoader loader = Thread.currentThread().getContextClassLoader();
DOMConfigurator.configure(loader.getResource("log4j.xml"));
}
Recommended Posts