spring boot, logback und Protokollierung.config-Eigenschaft
Bin ich implementieren der Protokollierung in eine spring-boot-Projekt mit logback-Bibliothek. Ich will laden verschiedene logging-Konfiguration-Dateien sind nach meiner-Feder-profile (property 'spring.pofiles.active'). Ich habe 3 Dateien : logback-dev.xml, logback-inte.xml und logback-prod.xml. Ich bin mit spring boot-version 1.2.2.RELEASE.
Wie Sie Lesen können in spring-boot-Dokumentation (hier). Es sagt:
Verschiedene logging-Systeme können aktiviert werden, indem Sie die entsprechenden Bibliotheken im classpath befinden, und weiter angepasst, indem ein geeigneter Konfigurations-Datei in der root des classpath, oder in einer angegebenen Position durch die Feder Umgebung-Eigenschaft Protokollierung.config. (Beachten Sie jedoch, dass da die Anmeldung initialisiert wird, bevor die Datei ApplicationContext erstellt wird, ist es nicht möglich zu Steuern, Protokollierung von @PropertySources im Frühjahr @Konfigurations-Dateien. System Eigenschaften und der konventionellen Feder-Boot-externe Konfigurations-Dateien funktionieren problemlos.)
Also habe ich versucht, die Anmeldung.config' - Eigenschaft in meiner Anwendung.Eigenschaften Datei:
logging.config=classpath:/logback-${spring.profiles.active}.xml
Aber wenn ich anfange, meine Anwendung, meine logback-{Profil}.xml ist nicht geladen...
Ich denke, dass die Protokollierung ist ein häufiges problem, dass alle Projekte mit spring boot gestoßen. Ich möchte wissen, ob ich in die richtige Richtung ist oder nicht, weil ich noch andere Lösungen, das funktioniert auch, aber ich finde Sie nicht elegant (bedingte Analyse mit Janino in logback.xml Datei oder command-line-Eigenschaft).
Überprüfen Sie meine änderung am 3. März '2016
überprüfen Sie diesen link: stackoverflow.com/a/49568780/4369820
Finden Sie Ihre Antwort - stackoverflow.com/a/54477155/5756557
InformationsquelleAutor LG_ | 2015-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich habe eine Lösung gefunden, und ich Verstand, warum der Frühling nicht kümmern über meine Anmeldung.config' - Eigenschaft definiert in der Anwendung.Eigenschaften-Datei.
Lösung und Erklärung :
Beim initialisieren der Protokollierung, spring boot sieht nur im Klassenpfad oder in Umgebungen, Variablen ( siehe http://docs.spring.io/spring-boot/docs/0.5.0.M3/api/org/springframework/boot/context/initializer/LoggingApplicationContextInitializer.html).
Die beste Lösung, die ich gefunden ist, um ein Elternteil im Preis inbegriffen logback.xml die Datei wird über das richtige logging config-Datei entsprechend meiner Feder Profil.
logback.xml :
logback-[Profil].xml - (in diesem Fall logback-dev.xml) :
Hinweis :
'spring.profile.aktiv' muss gesetzt sein in der Befehl Linie Argumente, die beim starten der app.
E. G für die JVM-Eigenschaften :
-Dspring.profiles.active=dev
Ref docs :
Bearbeiten (mehrere aktive profile) :
Um zu vermeiden, dass mehrere Dateien, können wir die bedingte Verarbeitung, die erfordert Janino Abhängigkeit (setup hier), siehe bedingte Dokumentation.
Mit dieser Methode können wir auch prüfen, für mehrere aktive profile in der gleichen Zeit. E. G (habe ich nicht getestet, diese Lösung, setzen Kommentar, wenn es nicht funktioniert):
Sehen javasenior Antwort auf ein weiteres Beispiel für eine bedingte Verarbeitung.
Ja, das ist wahr. In diesem Fall würde ich janino Bibliothek.
alle Aktualisierungen auf eine elegante Lösung, wenn Sie mehrere aktive profile in der gleichen Zeit?
Kasse der springProfile Erweiterung coming in Spring Boot 1.3.0
Sie können auch profile in der Anwendung.Eigenschaften mit Standard-dev, wie der Frühling.profile.active=${dev:dev}. Wenn Sie don ' T-pass -Dspring.profile.aktive Voreinstellung dev
InformationsquelleAutor LG_
Ein weiterer Ansatz könnte in der Lage mehrere profile zu erstellen Sie eine separate Datei für jede Umgebung.
Anwendung-prod.Eigenschaften
Anwendung-dev.Eigenschaften
Anwendung-lokale.Eigenschaften
BEWUSST SEIN
Wenn Sie nicht vorsichtig sind, könnten Sie am Ende die Protokollierung irgendwo unerwartete
InformationsquelleAutor Zergleb
Anstatt separate logback XML-Dateien für jedes Profil oder mit der WENN Bedingung , ich würde Folgendes vorschlagen (Wenn Sie weniger Unterschied in den XML-Dateien') für die einfache bedingte Verarbeitung :
wir müssen Sie noch angeben Frühjahr.profile.active=Modus richtig ?
InformationsquelleAutor nav3916872
Bedingte Verarbeitung mit logback wird eine Lösung ohne viele logback-Dateien. Hier ist ein link und eine Probe logback-Konfiguration mit Feder-profile.
Auch, Sie haben könnten, fügen Sie diese zu Ihrem pom.xml
InformationsquelleAutor javasenior
Frühjahr hat die Unterstützung der nächste tag
<springProperty/>
innen Logback XML-Datei, die mit diesem tag beschrieben hier . Es bedeutet, dass Sie leicht fügen Sie die variable aus der Feder property-Datei, auch diese variable mit dem Wert löst aus Umwelt/system-variable, die von Frühling.InformationsquelleAutor Andriy Rymar
Können Sie verschiedene logback.xml für andere profile, nur 3 Schritte:
1 Geben Sie dafür aktiv Profil in
application.properties
oderapplication.yml
:2, Config logback auch unterschiedliche Konfiguration von Profil:
3, Konfigurationsdatei Erstellen
logback.test.xml
:Es ist sehr einfach, brauchen Sie nicht etwas anderes tun.
InformationsquelleAutor sulin