Steuern von protokollumgebungsabhängigen Eigenschaften in der Datei mit externen Anwendungseigenschaften

8

In my spring-boot Anwendung I logback für die Protokollierung. Die Anwendung nutzt externe application.properties Datei für umgebungsspezifische Anwendungseigenschaften einstellen und beginnt mit der Option: -spring.config.location=path/to/file . Ich mag logback Konfigurationseigenschaften von dort auch so, dass alle Umgebungseigenschaften verwalten in einem Ort sind, zu lesen.

Ich habe versucht, die beschriebenen Ansatz hier , aber da die Eigenschaften Datei nicht auf dem classpath ist, erhalte ich die Fehlermeldung:

%Vor%

Gibt es etwas, das mir fehlt?

UPDATE:

Das Hinzufügen dieser Konfiguration funktioniert:

%Vor%

Aber ich möchte hartzucodieren den Dateipfad vermeiden.

    
javafan 16.11.2016, 03:59
quelle

4 Antworten

3

Fügen Sie die Systemumgebungsvariable hinzu, sodass das Logback für die Konfigurationsdatei

auf diesen Speicherort zurückgesetzt wird %Vor%     
kuhajeyan 16.11.2016 04:59
quelle
2

Da Sie Spring verwenden, können Sie Spring-Erweiterungen für das Logback verwenden: logback-ext-spring

Was diese Bibliothek macht, gibt Ihnen im Grunde die Möglichkeit, die tatsächliche Protokollierung an federverwaltete Objekte zu delegieren, die Ihnen Zugriff auf den Spring-Kontext geben. Sie können Appender innerhalb der Spring-Konfiguration erstellen und konfigurieren, wo Sie Zugriff auf die Variablen Environment und damit auch auf application.properties haben.

Sie können weitere Informationen auf der GitHub-Seite finden, aber hier ist eine Beispielkonfiguration, basierend auf dem Beispiel in der Verknüpfung, wo das Muster für den Konsolenappender aus der Umgebungseigenschaft "consolePattern" :

abgerufen wird

logback.xml :

%Vor%

LogbackConfig.java :

%Vor%
  

Wichtig
  Bitte beachten Sie, dass der Spring-Bean-Name mit dem Namen des Appenders in logback.xml übereinstimmen muss, im Beispiel "consoleAppender" . Vergessen Sie auch nicht initMethod und destroyMethod anzugeben.

Ich hoffe, das hilft Ihnen, den Weg zu finden, den Pfad nicht hart zu codieren.

    
vl4d1m1r4 25.11.2016 16:57
quelle
2

Wenn Sie Spring-Boot verwenden, um Ihre App auszuführen, können Sie Folgendes tun:

logback.xml

%Vor%

Sie können "configuration.file.path" ändern, aber Sie müssen diesen Namen nach dem Ausführen Ihrer App ändern.

Sie können die in der Eigenschaftendatei definierten Eigenschaften wie folgt verwenden:

%Vor%

Und fügen Sie den Parameter der VM hinzu, wenn Sie Ihre App ausführen

%Vor%

logging.config ist eine Spring-Boot-Konfiguration, Sie müssen also diesen Namen behalten. Sie können diese Datei bei jeder Ausführung ändern, ohne eine Konfiguration in Ihrer App zu ändern.

Wenn Sie Ihre App manuell über die Befehlszeile ausführen, sollte folgendes aussehen:

%Vor%

Dadurch ist die gesamte Protokollierungskonfiguration dynamisch und Sie geben sie beim Ausführen der App an. Sie können verschiedene Instanzen mit unterschiedlichen Konfigurationen verwenden.

    
Motakjuq 26.11.2016 09:16
quelle
1

Wir verwenden spring-boot nicht, aber vielleicht ist dieser Ansatz hilfreich:

Wir haben dieses LogbackConfigurator erstellt. Diese Klasse wird beim Start der Anwendung durch Abhören des ContextRefreshedEvent ausgeführt:

%Vor%

Um die Bean ausführen zu lassen, haben wir diese Zeile in unserer Java-Konfiguration hinzugefügt:

%Vor%     
actc 24.11.2016 09:58
quelle

Tags und Links