Wie wird die Protokollierung beim Ausführen einer JAR konfiguriert?

9

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.

    
planky 29.04.2012, 09:11
quelle

2 Antworten

7

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.

    
aleroot 29.04.2012, 09:16
quelle
3

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() ) .

    
JB Nizet 29.04.2012 09:21
quelle

Tags und Links