Comment spécifier un logback de la configuration comme un chemin de classe ressource, plutôt que d'un fichier
J'ai la situation suivante. J'ai besoin d'être en mesure d'exécuter deux programmes lancés par les différents fichiers batch où chaque fichier de commandes appelle une classe java avec main() de la même bocal. Je voudrais que chaque programme d'avoir son propre journal. Cependant, le deuxième programme est un programme d'installation pour la première, et par conséquent, je ne veux pas/ne pouvez pas spécifier facilement -Dlogback.configurationFile=/chemin/vers/le /fichier de configuration que cet endroit n'existe pas encore.
Logback documentation semble apporter une solution mais j'ai besoin d'un exemple de comment le faire fonctionner:
Spécifier l'emplacement du fichier de configuration par défaut comme un système
propriétéSi vous le souhaitez, vous pouvez spécifier l'emplacement de la configuration par défaut
fichier avec un système de propriété nommée logback.configurationFile. La valeur
de cette propriété peut être une URL, une ressource sur le chemin de classe ou un chemin d'accès
dans un fichier externe à l'application.java Dlogback.configurationFile=/path/to/config.xml
les chapitres.la configuration.MyApp1
Quelqu'un peut-il m'indiquer un exemple où logback.configurationFile est défini comme une ressource sur le chemin de la classe, par opposition au système de fichiers?
OriginalL'auteur Steve Cohen | 2012-10-25
Vous devez vous connecter pour publier un commentaire.
Vous pouvez simplement mettre une
my-logback.xml
dans la racine de votre classpath et les entrées de spécifier-Dlogback.configurationFile=my-logback.xml
. En interne, il ne sera probablement utiliserClassLoader#getResource(String name)
pour obtenir le fichier - vérifier la JavaDoc de cette méthode pour plus d'informations.Non, ça ne fonctionne pas
J'ai effectivement essayé maintenant et il fonctionne. Pouvez-vous vérifier votre nouvelle installation?
Vous devez omettre le principal / pour elle de tirer depuis le classpath. Si logback.xml est dans le répertoire /etc dans votre bocal, logback.configurationFile = etc/logback.xml
OriginalL'auteur Christoph Leiter
la réponse à cette question est dans le lien fourni:
https://logback.qos.ch/manual/configuration.html#configFileProperty
avec les exemples ci-dessous:
Le contenu à inclure peut être référencé dans un fichier, une ressource, ou une URL.
OriginalL'auteur RELW
J'ai un légèrement autre solution que de proposer des arguments de ligne de commande.
Mon projet est mis en place comme suit:
Je voulais le
logback.xml
à l'extérieur du pot depuis que j'ai eu lascanPeriod
ensemble pour vivre recharger. J'ai trouvé depuis, il doit obtenir ramassé sur le chemin de la classe, je vais ajouter le chemin d'accès à lamanifest.mf
et il va avoir ramassé automatiquement.Parties connexes de
foo
'spom.xml
ressemble à ceci:Choses importantes à prendre note de:
src/conf
à la norme dossier de compilationtarget/conf
.conf
dossier à laMANIFEST.MF
'classpath de sorte que vous n'avez pas besoin de spécifier l'emplacement sur la ligne de commande.conf
dossier sera ajouté au classpath, pas seulementlogback.xml
Pour le pot à exécuter dans ce scénario, le
conf
dossier doit être placé à côté du pot. Il ressemble à:La
MANIFEST.MF
ressemble à quelque chose comme ceci:OriginalL'auteur Scrambo