web-dev-qa-db-fra.com

Où est le bon emplacement pour placer Log4j.properties dans un projet Eclipse?

Où dans mon projet Eclipse devrais-je ajouter le log4j.properties fichier pour qu'il fonctionne comme prévu?

58
Srinivas Reddy

vous pouvez l'ajouter où vous voulez, lorsque vous exécutez votre projet, configurez le chemin d'accès aux classes et ajoutez l'emplacement des fichiers log4j.properties en cliquant sur: Exécuter -> Exécuter la configuration -> [onglet chemin d'accès] -> cliquez sur Entrées utilisateur - > Avancé -> Sélectionnez Ajouter un dossier -> sélectionnez l'emplacement de votre fichier log4j.properties

et ensuite -> OK -> run

et il devrait être chargé

84
Charbel

Le moyen le plus sûr, IMO, est de pointer le fichier dans votre configuration Run/Debug

-Dlog4j.configuration=file:mylogging.properties

! Attention: lors de l’utilisation des configurations de lancement Eclipse, la spécification de la file: protocole est obligatoire.

De cette manière, le consignateur n'acceptera aucun logging.properties antérieur au classpath ni celui par défaut du JDK.

En outre, envisagez d’utiliser réellement le fichier log4j.xml qui a une syntaxe d’expression plus riche et autorisera davantage de choses (log4j.xml) par rapport à log4j.properties.

33
Alain Pannetier

Ajoutez le fichier log4j.properties au chemin de classe d'exécution du projet. Certaines personnes l'ajoutent à la racine de l'arborescence source (de sorte qu'elle soit copiée à la racine des classes compilées).

Edit: Si votre projet est un projet maven, vous pouvez placer le fichier log4j.properties dans le dossier src/main/resources (et le fichier src/test/resources pour vos tests unitaires).

Si vous avez plusieurs environnements (par exemple, développement et production), souhaitez une journalisation différente pour chaque environnement et souhaitez déployer le même fichier jar (ou war ou ear) dans chaque environnement (comme dans une construction pour tous les environnements), stockez le fichier. log4j.properties en dehors du fichier jar et placez-le dans le chemin d'accès aux classes pour chaque environnement (configurable par environnement). Historiquement, j'incluais un répertoire connu dans chaque environnement du chemin de classe et y déploierais des éléments spécifiques à l'environnement. Par exemple, ~ Tomcat_user/localclasspath où ~ Tomcat_user est le répertoire de base de l'utilisateur qui exécutera l'instance de Tomcat sur laquelle mon fichier war sera déployé.

12
DwB

Le meilleur moyen est de créer un dossier source spécial nommé resources et de l’utiliser pour toutes les ressources, y compris log4j.properties. Donc, il suffit de le mettre là.

Sur le dossier Java Resources créé automatiquement par le projet Web dynamique, cliquez avec le bouton droit de la souris, ajoutez un nouveau dossier source et nommez-le 'ressources'. Les fichiers ici seront ensuite exportés vers le fichier war dans le répertoire des classes

10
AlexR

Si vous avez une bibliothèque et que vous souhaitez ajouter le log4j:

  1. Créez un dossier nommé "ressources" dans votre projet.
  2. Créez un fichier .properties nommé log4j
  3. Définir les propriétés dans le fichier log4j.properties
  4. Appuyez sur le bouton droit dans le projet et allez dans propriétés-> Chemin de construction Java et, enfin, allez dans l'onglet "Source".
  5. Appuyez sur Ajouter un dossier et recherchez le dossier "ressources" créé à l'étape 1.
  6. Terminer.

(J'ai supposé que vous avez la bibliothèque log4j ajoutée.)

PD: Désolé pour mon anglais.

7

Cette question a déjà reçu une réponse ici

Le classpath n'inclut jamais de fichiers spécifiques. Il comprend les répertoires et les fichiers jar. Alors, mettez ce fichier dans un répertoire qui se trouve dans votre classpath.

Log4j Les propriétés ne sont pas (normalement) utilisées dans les applications en développement (sauf si vous déboguez Eclipse lui-même!). Donc, ce que vous voulez vraiment construire l'exécutable Java (Application, WAR, EAR ou autre)) et inclure le Log4j propriétés dans le classpath d’exécution.

4
sgokhales

Mettez log4j.properties dans le classpath d’exécution.

Ce forum montre quelques articles sur les moyens possibles de le faire.

3
Matt Ball

En général, je le mets dans un dossier spécial "res" ou "ressources comme déjà dit, mais après pour l'application web, je copie le log4j.properties avec la tâche ant dans le répertoire WEB-INF/classes. C'est comme si vous laissiez le fichier à la racine du dossier src/mais en général, je préfère le voir dans un dossier dédié.

Avec Maven, l'endroit habituel à mettre est dans le dossier src/main/resources _ comme répondu à ceci autre post . Toutes les ressources là-bas iront à votre construction dans le chemin de classe racine (par exemple, target/classes/)

Si vous voulez un enregistreur puissant, vous pouvez également consulter bibliothèque slf4j qui est une façade d’enregistreur et peut utiliser l’implémentation log4j située derrière.

2
рüффп

Vous ne voulez pas que le fichier log4j.properties soit packagé avec votre projet déployable - c'est une mauvaise idée, comme d'autres afficheurs l'ont mentionné.

Recherchez l'installation Tomcat racine sur laquelle Eclipse pointe lorsqu'elle exécute votre application, puis ajoutez le fichier log4j.properties à l'emplacement approprié. Pour Tomcat 7, le bon endroit est

$ {Tomcat_HOME}/lib

1
Erica Kane

Je découvre que l'emplacement du fichier log4j.properties dépend du type de projet Eclipse.

En particulier, pour un projet Web dynamique Eclipse, la plupart des réponses impliquant l’ajout du fichier log4j.properties au fichier war n’ajoutent pas le fichier de propriétés au bon emplacement, en particulier pour Tomcat/Apache.

Voici une partie de mes recherches et de ma solution au problème (encore une fois, spécialement pour un projet Web dynamique exécuté sur Tomcat/Apache 6.0)

  • Veuillez vous reporter à cet article pour savoir comment Tomcat chargera les classes. C'est différent du chargeur de classe normal pour Java. ( https://www.mulesoft.com/tcat/Tomcat-classpath ) Notez qu'il ne se trouve qu'à deux endroits dans le fichier war, WEB-INF/classes et WEB-INF/lib.

  • Notez qu'avec un projet Web dynamique, il n'est pas judicieux de stocker votre fichier .properties dans le répertoire build /../ classes, car ce répertoire est effacé chaque fois que vous nettoyez votre projet.

  • Tomcat ne gère pas les fichiers .property dans l'emplacement WEB-INF/lib.

  • Vous ne pouvez pas stocker le fichier log4j.properties dans le répertoire src, car Eclipse résume ce répertoire en dehors de votre vue.

  • L’une des solutions que j’ai trouvée pour résoudre ce problème consiste à modifier la construction et à ajouter un répertoire supplémentaire qui sera éventuellement chargé dans le répertoire WEB-INF/classes du fichier war. Plus précisément....

(1) Cliquez avec le bouton droit de la souris sur votre projet dans l’explorateur de projet, sélectionnez "Nouveau" -> "Dossier". Vous pouvez nommer n'importe quel dossier, mais la norme dans ce cas est "ressources". Le nouveau dossier devrait apparaître au niveau racine de votre projet.

(2) Déplacez le fichier log4j.properties dans ce nouveau dossier.

(3) Cliquez à nouveau avec le bouton droit de la souris sur le projet et sélectionnez "Chemin de construction" -> "Configurer le chemin de construction". Sélectionnez l'onglet "Sources". Cliquez sur le bouton "Ajouter un dossier". Naviguez jusqu'à votre nouveau dossier créé à l'étape (1) ci-dessus. Sélectionnez "OK".

(4) Une fois de retour dans la vue Explorateur de projets Eclipse, notez que le dossier a été déplacé vers la zone "Ressources Java" (en d'autres termes, il n'est plus à la racine en raison de l'abstraction de la présentation Eclipse).

(5) Nettoyez votre projet.

(6) Pour valider que le fichier .properties existe maintenant dans WEB-INF/classes dans votre fichier war, exportez un fichier war dans un emplacement facile (cliquez avec le bouton droit de la souris sur Projet -> Exporter -> Fichier de guerre) et vérifiez le contenu. Notez que le fichier log4j.properties apparaît maintenant dans les classes/WEB-INF.

(7) Promouvez votre projet sur Tomcat/Apache et notez que log4j fonctionne maintenant.

Maintenant que log4j fonctionne, commencez à vous connecter, résolvez les problèmes du monde, prenez du temps et dégustez une délicieuse boisson adulte.

1
Robert Bender