Wie geben Sie eine logback-Konfiguration als classpath-Ressource, anstatt eine Datei
Ich habe die folgende situation. Ich muss in der Lage zu laufen zwei Programme ins Leben gerufen, durch verschiedene batch-Dateien, wo jede batch-Datei ruft eine java-Klasse mit main() aus dem gleichen Glas. Ich möchte jedes Programm ein eigenes Protokoll. Jedoch, das zweite Programm ist ein installer für die erste, und deshalb, ich will nicht/kann nicht einfach festlegen,- Dlogback.configurationFile=/path/to/config-Datei so, dass die Lage möglicherweise noch nicht vorhanden.
Logback Dokumentation scheint eine Lösung zu bieten , aber ich brauche ein Beispiel, wie es funktionieren:
Geben Sie den Speicherort der Standard-Konfiguration als ein system
EigenschaftWenn Sie möchten, können Sie den Speicherort angeben, der default-Konfiguration
Datei mit der system-property namens logback.configurationFile. Der Wert
von dieser Eigenschaft kann eine URL, eine Ressource über die Klasse Pfad oder einen Pfad
um eine Datei außerhalb der Anwendung.java -Dlogback.configurationFile=/path/to/config.xml
Kapitel.- Konfiguration.MyApp1
Kann jemand mir ein Beispiel, wo logback.Konfigurationsdatei wird definiert als eine resource im classpath im Gegensatz zu der Datei system?
- Wenn es nur der log-Datei, die Sie ändern wollen, warum nicht für die Definition der log-Datei, als variable in einer einzigen logback.xml Konfigurations-Datei. Dies ist besonders gut, wenn die meisten der logging-Konfiguration ist die gleiche. Dann den logfile Namen gelesen werden können, von einer resource im classpath oder werden Teil der Installation ist der Aufruf.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie einfach einen
my-logback.xml
im Stamm eines der classpath-Einträge, und geben Sie-Dlogback.configurationFile=my-logback.xml
. Intern wird wahrscheinlichClassLoader#getResource(String name)
Datei zu erhalten - überprüfen Sie die JavaDoc für diese Methode, für mehr Informationen.die Antwort auf diese Frage ist in der mitgelieferten link:
https://logback.qos.ch/manual/configuration.html#configFileProperty
mit den folgenden Beispielen:
Den Inhalt zu umfassen, auf die verwiesen werden kann als Datei, als Ressource oder als URL.
Ich habe eine leicht andere Lösung, als mit Befehl Linie Argumente.
Mein Projekt eingerichtet ist, in etwa so:
Wollte ich die
logback.xml
außerhalb der jar-da hatte ich dasscanPeriod
set für live-reload. Ich dachte mir, da sollte es abgeholt, auf dem Klassenpfad, ich werde fügen Sie den Pfad zu dermanifest.mf
und Sie erhalten automatisch aufgenommen.Sicherheitsbezogene Teile von
foo
'spom.xml
sieht wie folgt aus:Wichtige Dinge zu beachten:
src/conf
zu den standard-Zusammenstellung Ordnertarget/conf
.conf
OrdnerMANIFEST.MF
's classpath, so dass Sie nicht brauchen, um geben Sie den Speicherort auf der Kommandozeile.conf
Ordner Hinzugefügt werden, um den classpath, nicht nurlogback.xml
Für die jar laufen in diesem Szenario, die
conf
Ordner muss gelegt werden neben das Glas. Es wird ungefähr so Aussehen:Den
MANIFEST.MF
sieht ungefähr so aus: