Logback und Spring Boot ist neu springProperty-lookup-Mechanismus funktioniert nicht
Bin ich mit Spring-Boot-1.3.0.RC1 über den Frühling-cloud Brixton.M2 und wurden nicht in der Lage zu ziehen, spring boot Eigenschaften in logback.xml wie angedeutet, die von dieser Funktion checkin Unterstützung springProperty in logback-Konfigurationen
Ich mit .yml-Dateien und wollen, ziehen name der Anwendung von bootstrap.yml oder Anwendung.yml.
logback-spring.xml:
<configuration>
<springProperty scope="context" name="myappName" source="spring.application.name"/>
<contextName>${myappName}</contextName>
<appender name="logFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logs/${myappName}.log</file>
...
</appender>
...
</configuration>
Die Dokumentation hier Spring Boot Logback-Erweiterungen hilft nicht viel.
Diesem anderen stackoverflow-Frage Nicht verwenden, Feder Eigenschaft Platzhalter in logback.xml ist älter und funktioniert nicht für mich. Keine Einsicht wäre hilfreich.
Pro Anfrage, hier ist der entsprechende dependency tree verwendet wird
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.3.0.RC1:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.3.0.RC1:compile
[INFO] | | +- org.springframework.boot:spring-boot:jar:1.3.0.RC1:compile
[INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.3.0.RC1:compile
[INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.3.0.RC1:compile
[INFO] | | | +- ch.qos.logback:logback-classic:jar:1.1.3:compile
[INFO] | | | | \- ch.qos.logback:logback-core:jar:1.1.3:compile
[INFO] | | | +- org.slf4j:jcl-over-slf4j:jar:1.7.12:compile
[INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.12:compile
[INFO] | | | \- org.slf4j:log4j-over-slf4j:jar:1.7.12:compile
[INFO] | | \- org.yaml:snakeyaml:jar:1.16:runtime
Pro 2. bitte um info, was eigentlich Los ist, die logback-Eigenschaft myappName nicht Wert. Der Weg, den ich kenne ist, dass der Wert wird "myappName_IS_UNDEFINED" und mein logfile erhält den Namen "myappName_IS_UNDEFINED.log" und die %contextName "myappName_IS_UNDEFINED".
InformationsquelleAutor RubesMN | 2015-11-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein Analyse und eine Lösung für zukünftige Leser... ich habe versucht, mit
spring.application.name
Werte inbootstrap.yml
, dannapplication.yml
, dannapplication.properties
aber keiner arbeitete. Ich dachte, es war, weil ichlogback.xml
, aber das konvertieren zulogback-spring.xml
brachte keine Veränderung. Blick auf den code verpflichtet hier, ziehen die Werte überthis.environment.getProperty(source)
abhängig ist, wenn die Eigenschaft Quellen geladen werden, vs, wenn derlogback-spring.xml
- Datei interpretiert wird. Nicht sicher, warum Dave Syer war in der Lage, es zu arbeiten, aber mein .xml-variable aufgefüllt wurde, bevor die Eigenschaft lokale Quellen sind der Umgebung Hinzugefügt.Den Wert ist aufgefüllt, innerhalb der .xml-Datei wenn ich es über SpringApplication.setDefaultProperties(). Damit ist die route, die ich nahm.
SpringApplicationRunListener.started()
lese ich in der bootstrap.yml (wo ich die erforderlichen Frühling.- Anwendung.Namen für alle framework-Benutzer) übernew ClassPathResource("/bootstrap.yml")
service.log.name
in einer HashMap basiert off der WertSpringApplication.setDefaultProperties()
mit, dass die HashMap${myappName}
innerhalb derlogback-spring.xml
DateiIch gebe zu, das ist keine perfekte Lösung, aber eine, die funktioniert für Sie jetzt, und wird sich wahrscheinlich fortsetzen, um die Arbeit für zukünftige Versionen von springBoot. Ich bin offen für weitere Ideen, sondern wollte eine Lösung zu bieten, die für andere gearbeitet, die haben die gleiche Erfahrung.
wenn Sie laden Sie Ihre eigenen Eigenschaften, warum würden Sie nicht einfach hinzufügen-argument in form von
--property=value
? dies sollte priorer dann default-Eigenschaft source und einfach.InformationsquelleAutor RubesMN
Bin ich auf Spring Boot 1.3.1 und ich Stand vor dem gleichen Problem.
Was ich heraus fand war, dass die Eigenschaft muss festgelegt werden, in die Anwendung.yml UND bootstrap.yml. In nur einer oder der andere funktioniert nicht. Übergabe nur als a-D-argument funktioniert.
Es ist ein bisschen ein hazzle eine Doppel-Konfiguration, obwohl, vor allem, wenn es konfiguriert ist pro Profil.
Vielleicht die logback-Konfiguration ist erforderlich, in beiden Phasen und der Wert der Eigenschaft nicht weiter.
InformationsquelleAutor nedenom
zuerst, Ihre logback-Konfiguration-Datei-name sollte mit dem Suffix
-spring
egal, die Datei ist inxml
odergroovy
format.im Frühjahr, config center bevorzugt wird, dann Kommandozeilen-Argumente, dann die lokalen Eigenschaften in
bootstrap.yml
alle lokalen property-Dateien.wenn es viele Eigenschaften in mehrere Konfigurationsdateien der erste Effekt, egal, was es Wert ist.
durch die Art und Weise, stellen Sie bitte sicher, dass es kein programmatisch logback Einstellungen vor
EnvironmentPrepared
Ereignis, verursacht die logback-Einstellungen werden zurückgesetzt. inzwischen gibt es mehrere spring-Kontexte der logback Einstellungen werden zurückgesetzt, mehrere Male, für jeden Kontext.bitte überprüfen Sie diese Regeln und sicher stellen, dass jeder Schritt in der Steuerung.
InformationsquelleAutor Gemini Keith
Werden, um Zugriff auf die spring app-name , müssen Sie zunächst definiert die Feder-Eigenschaft in logback-spring.xml wie unten gezeigt :
<springProperty scope="context" name="MyApp" source="com.app.star"/>
So, Wenn Sie Zugriff auf die Quelle über dann logisch es muss definiert werden, in Anwendung.yml-Datei wie folgt :
com:
app:
star: HelloWorld
# Logging Configurations
logging:
config: "classpath:logback-spring.xml"
Jetzt auch in logback-spring.xml der appName eingestellt werden würde mit Namen wie 'HelloWorld' die Sie zugreifen können, mit
{MyApp}
.Hoffe, dass die obige Erklärung würde helfen.
InformationsquelleAutor Abhishek katiyar
Funktioniert es für mich, wenn ich die "Frühling.- Anwendung.name" in " - Anwendung.Eigenschaften" (nicht "bootstrap.Eigenschaften", weil das logging-system initialisiert wird, in einer phase, wo die bootstrap-Eigenschaften sind noch nicht verfügbar, glaube ich). Ich glaube nicht, dass logback können Sie die "Kontext" - Namen, aber YMMV.
<property name="myappName" value="configeurekaclient"/>
. Die contextName Einstellung nicht funktioniert die Hälfte der Zeit, ich bekomme (jira.qos.ch/browse/LOGBACK-801) problem. Also noch etwas faul.Vielleicht könnten Sie aktualisieren Sie Ihre Frage mit mehr details, was eigentlich schief geht?
Es funktioniert für mich, wenn ich den Wert in "Anwendung.Eigenschaften", aber nicht "Anwendung.yml". Sind die yaml-Dateien verarbeitet, zu einem späteren Zeitpunkt dann property-Dateien? Ich bin mit spring-boot-1.3.8.
InformationsquelleAutor Dave Syer
Für mich, es funktioniert nur über ein command-line-Eigenschaft, wie --Eigenschaft.Wert=asd.
InformationsquelleAutor Alessandro Dionisi
Bei mir hat es geklappt, nachdem ich aktualisiert, nur in der bootstrap.Eigenschaften. Updates in der Anwendung.Eigenschaften funktioniert nicht und auch nicht erforderlich.
In Logback.xml
<springProperty scope="context" name="kafkaHostPort" source="kafka.host.port"
/>InformationsquelleAutor sivakadi
Unserer Lösung ist das umbenennen
logback(-spring).xml
z.B.logback-delayed.xml
so dass es nicht gelesen werden, bevor Spring Cloud Config, und dann aktivieren Sie es später explizit aus der config-Datei in der Cloud repo-Config, z.B.:InformationsquelleAutor LIU ShouHai