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.
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"
:
logback.xml :
%Vor%LogbackConfig.java :
%Vor%Wichtig
Bitte beachten Sie, dass der Spring-Bean-Name mit dem Namen des Appenders inlogback.xml
übereinstimmen muss, im Beispiel"consoleAppender"
. Vergessen Sie auch nichtinitMethod
unddestroyMethod
anzugeben.
Ich hoffe, das hilft Ihnen, den Weg zu finden, den Pfad nicht hart zu codieren.
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.
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:
Um die Bean ausführen zu lassen, haben wir diese Zeile in unserer Java-Konfiguration hinzugefügt:
%Vor%Tags und Links java spring spring-boot logback