Wie bewegen log4j.Immobilien außerhalb der jar-Datei?
Baue ich eine jar
- Datei mit gradle, meine app verwendet log4j
. Zunächst mein log4j.properties
war eingebettet in meine jar-Datei. Ich zog es nach draußen, um in der Lage sein, um es zu ändern in der Produktion. Ich aktualisiert die META-INF/MANIFEST.MF
eingebettete Datei in meinem jar-Datei, um diese zu reflektieren:
Class-Path: lib/log4j-1.2.1 lib/slf4j-api-1.4.2.jar
lib/slf4j-api-1.5.6.jar lib/slf4j-log4j12-1.5.6.jar
lib/log4j-1.2.14.jar
...
lib/log4j.properties
Mein Dateibaum wie folgt auf einem windows7 32bit Maschine:
root/myapp.jar
root/lib/log4j.properties
Beginne ich meine app mit diesem Befehl:
java -Dlog4j.configuration='lib\log4j.properties' -Dlog4j.debug=true -jar myapp.jar > logs/output.log
meine logs/output.log
sagt, dass log4j nicht finden konnte, seine property-Datei:
log4j: Trying to find ['lib\log4j.properties'] using context classloader sun.misc.Launcher$AppClassLoader@17fa65e.
log4j: Trying to find ['lib\log4j.properties'] using sun.misc.Launcher$AppClassLoader@17fa65e class loader.
log4j: Trying to find ['lib\log4j.properties'] using ClassLoader.getSystemResource().
log4j: Could not find resource: ['lib\log4j.properties'].
Ich habe auch versucht mit:
-Dlog4j.configuration='lib/log4j.properties'
-Dlog4j.configuration='log4j.properties'
-Dlog4j.configuration=log4j.properties
Wenn ich die Datei einbetten in das Glas, es funktioniert:
log4j: Trying to find [log4j.properties] using context classloader sun.misc.Launcher$AppClassLoader@18385e3.
log4j: Using URL [jar:file:/C:/Users/User/Desktop/myapp/myapp.jar!/log4j.properties] for automatic log4j configuration.
log4j: Reading configuration from URL jar:file:/C:/Users/User/Desktop/myapp/myapp-2.1.9.jar!/log4j.properties
log4j: Parsing for [root] with value=[debug, A].
Aber ich brauche es draußen... keine Ahnung?
- Da eine jar-Datei ist auch nur ein zip-Archiv, die meisten komprimieren/Dekomprimieren Programme lassen Sie Bearbeiten von text-Dateien innerhalb der jar-Datei.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
aber ich bin neugierig: hat das Class-Path-definition in der manifest-die wirklich funktionieren? Gläser, ja, das ist standard, aber funktioniert es für log4j.Eigenschaften?
file:
Präfix funktioniert. Ich weiß nicht, ob Class-path-Definitionen arbeiten fürlog4j.properties
, das ist meine ursprüngliche Frage 🙂