Ich habe die folgende Situation. Ich muss in der Lage sein, zwei Programme auszuführen, die von verschiedenen Batch-Dateien gestartet werden, wobei jede Batch-Datei eine Java-Klasse mit main () aus demselben Jar aufruft. Ich möchte, dass jedes Programm sein eigenes Protokoll hat. Das zweite Programm ist jedoch ein Installer für das erste, und deshalb möchte / kann ich -Dlogback.configurationFile = / pfad / zu / config-Datei nicht einfach angeben, da dieser Ort möglicherweise noch nicht existiert.
>Logback-Dokumentation scheint eine Lösung zu bieten , aber ich brauche ein Beispiel, wie es funktioniert:
Angabe des Speicherorts der Standardkonfigurationsdatei als System Eigenschaft
Wenn Sie möchten, können Sie den Speicherort der Standardkonfiguration angeben Datei mit einer Systemeigenschaft namens logback.configurationFile. Der Wert Diese Eigenschaft kann eine URL, eine Ressource im Klassenpfad oder ein Pfad sein in eine Datei außerhalb der Anwendung.
java -Dlogback.configurationFile = / Pfad / zu / config.xml chapters.configuration.MyApp1
Kann jemand mich auf ein Beispiel verweisen, in dem logback.configurationFile als Ressource im Klassenpfad definiert ist, im Gegensatz zum Dateisystem?
Sie können einfach ein my-logback.xml
in den Stamm eines Ihrer Klassenpfadeinträge setzen und -Dlogback.configurationFile=my-logback.xml
angeben. Intern wird wahrscheinlich ClassLoader#getResource(String name)
verwendet, um die Datei zu erhalten - überprüfen Sie das JavaDoc dieser Methode für weitere Informationen.
Ich habe eine etwas andere Lösung als Befehlszeilenargumente anzubieten.
Mein Projekt ist wie folgt eingerichtet:
%Vor% Ich wollte das logback.xml
außerhalb des Jars haben, da ich scanPeriod
für das Live-Nachladen eingestellt habe. Ich dachte, da es auf dem Klassenpfad aufgenommen werden sollte, werde ich den Pfad zum manifest.mf
hinzufügen und es wird automatisch aufgenommen.
Verwandte Teile von foo
s pom.xml
sieht folgendermaßen aus:
src/conf
in den Standard-Kompilierungsordner target/conf
. conf
-Ordner dem Klassenpfad von MANIFEST.MF
hinzu, sodass Sie den Speicherort in der Befehlszeile nicht angeben müssen. conf
werden zum Klassenpfad hinzugefügt, nicht nur logback.xml
Damit das Jar in diesem Szenario ausgeführt wird, muss der Ordner conf
neben dem Jar platziert werden. Es sieht so aus:
Das MANIFEST.MF
sieht ungefähr so aus:
Tags und Links logback