Używam projektu wiosennego rozruchu.Jak wstrzykiwać aktywny profil sprężyny w logback
Środowisko:
ch.qos.logback:logback-core:jar:1.1.5
ch.qos.logback:logback-classic:jar:1.1.5
org.springframework.boot:spring-boot-starter-logging:jar:1.3.3.RELEASE
W moim projekcie używam właściwości z application.yml (application-dev.yml i aplikacji production.yml)
Od Logback wiosennym rozszerzenia rozpoczyna się przed wiosną Nie mogę wstrzyknąć pliku spring.profiles.active do pliku logback.xml.
Jest to prostsza wersja mojego pliku logback.xml:
<configuration scan="true">
<property name="LOG_PATH" value="/var/log/" />
<property name="APP_NAME" value="xyz" />
<property name="PROFILE" value="-${spring.profiles.active}" />
<property name="CHARSET" value="utf-8" />
<property name="PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<appender name="APP-FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_PATH}${APP_NAME}${PROFILE}.log</file>
<encoder>
<charset>${CHARSET}</charset>
<Pattern>${PATTERN}</Pattern>
</encoder>
</appender>
<logger name="a.b.c" level="INFO">
<appender-ref ref="APP-FILE" />
</logger>
<root level="INFO">
<appender-ref ref="APP-FILE"/>
</root>
profilu szukam jest własnością spring.profiles.active.
Moim celem jest, aby mieć plik dziennika w katalogu /var/log te pliki xyz-dev lub xyz-produkcja ale coraz xyz-spring.profiles.active_IS_UNDEFINED.log zamiast kursu .
podejść:
1 - za pomocą komponentu jak:
@Component
public class InitializationService implements ApplicationListener<ContextRefreshedEvent> {
// inject spring profile active into logback.xml
}
nie działa oczywiście ponieważ rozszerzenie logback Wiosna rozpoczyna się przed nałożeniem Wiosna Boot.
2 - Korzystanie z nieruchomości na logback.xml jak ten
<file>${LOG_PATH}${APP_NAME}${PROFILE}.log</file>
wynik jest xyz-spring.profiles.active_IS_UNDEFINED.log
jeśli PROFIL jest własnością z kluczem wartości dla aktywnego profilu, powinien działać – davidxxx
PROFIL, którego szukam, jest właściwością ** spring.profiles.active **, która jest zdefiniowana w application.yml lub poleceniem linia. – Leonel