Ich bin neu in der Java-Protokollierungs-API und benötige Hilfe bei diesem Problem:
Beim Erstellen der Anwendung wurde meine Konfigurationsdatei im Projekt-Stammordner gespeichert. Daher habe ich -Djava.util.logging.config.file=logging.properties
switch verwendet, um das Programm auszuführen.
Aber dann habe ich die ausführbare JAR exportiert.
Wie konfiguriere ich die Protokollierung jetzt? Es funktioniert nicht, wenn ich den Pfad zur Konfigurationsdatei mit dem -D-Schalter festlege.
Sie können keine JVM-Argumente in der Datei MANIFEST.MF angeben, daher müssen Sie die Protokollierungseigenschaften in der Befehlszeile oder mit einer Verknüpfung angeben:
%Vor%Sonst könnten Sie eine Eigenschaftendatei (logging.properties in Ihrem Fall) im JAR packen, lesen Sie das unter starten und diese Einstellungen in die Systemeigenschaften übernehmen.
Das Javadoc sagt:
Darüber hinaus verwendet der LogManager zwei optionale Systemeigenschaften Erlaube mehr Kontrolle über das Lesen der anfänglichen Konfiguration:
%Vor%Diese beiden Eigenschaften können über die API "Einstellungen" oder als Befehl festgelegt werden Zeileneigenschaftsdefinitionen für den Befehl "java" oder als Systemeigenschaft Definitionen an JNI_CreateJavaVM übergeben.
Wenn die Eigenschaft "java.util.logging.config.class" gesetzt ist, dann wird der Der Eigenschaftswert wird als Klassenname behandelt. Die gegebene Klasse wird sein geladen, wird ein Objekt instanziiert und der Konstruktor dieses Objekts ist verantwortlich für das Einlesen der Erstkonfiguration. (Dieses Objekt kann andere Systemeigenschaften verwenden, um seine Konfiguration zu steuern alternative Konfigurationsklasse kann readConfiguration (InputStream) verwenden um Eigenschaften im LogManager zu definieren.
Verwenden Sie also entweder die Systemeigenschaft java.util.logging.config.file
und speichern Sie die Konfigurationsdatei aus der JAR-Datei (was wahrscheinlich eine gute Idee ist, wenn Sie die Protokollierungseigenschaften anpassen möchten, um etwas Ungewöhnliches zu debuggen oder zu analysieren Verhalten), oder speichern Sie die Konfigurationsdatei wo immer Sie wollen (zum Beispiel in der JAR-Datei), und verwenden Sie die java.util.logging.config.class
-Systemeigenschaft, um eine Klasse zu laden und zu instanziieren, die die Datei in der JAR-Datei liest (Using Class.getResourceAsStream()
) .