Comment lire le fichier de paramètres log4j dans un projet Java assemblé dans un fichier jar Memo

Aperçu

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

Exemple d'échec

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.

Cause de l'échec

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.

Solution

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

Comment lire le fichier de paramètres log4j dans un projet Java assemblé dans un fichier jar Memo
Comment lire votre propre fichier YAML (*****. Yml) en Java
Comment ajouter un fichier jar dans ScalaIDE
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Comment convertir un fichier en tableau d'octets en Java
Comment déboguer le fichier jar généré avec Eclipse
Mémo: [Java] Comment vérifier groupId etc. décrit dans pom.xml
Lire le fichier de propriétés Java en C #
Comment apprendre JAVA en 7 jours
Enregistrer la sortie dans un fichier en Java
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Comment concaténer des chaînes avec Java
Comment créer un fichier jar sans dépendances dans Maven
Comment obtenir la longueur d'un fichier audio avec Java
Comment implémenter le calcul de la date en Java
Comment implémenter le filtre de Kalman par Java
Prise en charge multilingue de Java Comment utiliser les paramètres régionaux
Essayez de résoudre Project Euler en Java
[Java] Comment utiliser la classe File
Comment faire une conversion de base en Java
Comment appliquer les conventions de codage en Java
Comment intégrer Janus Graph dans Java
Lire le fichier xlsx en Java avec Selenium
Comment obtenir la date avec Java
Exemple pour décompresser le fichier gz en Java
Lire une chaîne dans un fichier PDF avec Java
Comment afficher une page Web en Java
Comment masquer les champs nuls en réponse en Java
Comment compresser un fichier JAVA CSV et le gérer dans un tableau d'octets
[Java] Lire les fichiers dans src / main / resources
Comment se lier avec un fichier de propriétés dans Spring Boot
Comment résoudre les problèmes d'expression en Java
[Java] Mémo sur la façon d'écrire la source
Comment créer un fichier exécutable dans Maven
Comment écrire Java String # getBytes dans Kotlin?
Comment enregistrer des fichiers avec l'extension spécifiée sous le répertoire spécifié en Java dans la liste
[Java] [Maven] Modèle de pom.xml pour enregistrer le fichier jar tiers dans le référentiel local
Comment appeler des fonctions en bloc avec la réflexion Java
Comment créer un environnement Java en seulement 3 secondes
[Java] Comment omettre le constructeur privé dans Lombok
Comment passer d'Eclipse Java à un fichier SQL
Comment entrer / sortir des fichiers mainframe IBM en Java?
Comment créer un projet Spring Boot dans IntelliJ
Comment lire la gestion de la mémoire Java et GC Viewer
Comment créer un URI de données (base64) en Java
Ajoutez un fichier jar externe dans un projet IntelliJ.
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
Comment tester l'écran de téléchargement de fichiers avec Spring + Selenium
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment Git gérer les projets Java EE dans Eclipse
Résumé de la mise en œuvre des arguments par défaut en Java
Comment mettre l'ancien Java (série 8) dans macOS 10.15 Catalina
Remarques sur l'utilisation des expressions régulières en Java
Lire JSON en Java
Lire le fichier de propriétés Java
Comment charger une bibliothèque à partir d'un fichier JAR avec VSCode << Comment ne pas utiliser Maven / Gradle >>
Comment obtenir le nom d'une classe / méthode exécutée en Java