मैं एक वसंत बूट प्रोजेक्ट का उपयोग कर रहा हूं।लॉगबैक में सक्रिय वसंत प्रोफ़ाइल इंजेक्ट कैसे करें
पर्यावरण:
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
अपने प्रोजेक्ट मैं application.yml (आवेदन-dev.yml और अनुप्रयोग-production.yml)
साथ गुण का उपयोग कर रहा Logback स्प्रिंग विस्तार के बाद से में वसंत से पहले शुरू होता है मैं logback.xml फ़ाइल में spring.profiles.active इंजेक्ट करने में सक्षम नहीं हूं।
<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>
शख्सियत मैं तलाश कर रहा हूँ संपत्ति spring.profiles.active है:
यह मेरा logback.xml फ़ाइल का एक सरल संस्करण है।
मेरा लक्ष्य /var/log फ़ाइलें निर्देशिका पर एक लॉग फ़ाइल है xyz-देव या xyz उत्पादन लेकिन मैं निश्चित रूप से बजाय xyz-spring.profiles.active_IS_UNDEFINED.log हो रही ।
दृष्टिकोण:
1 - की तरह एक घटक का उपयोग करना: क्योंकि logback स्प्रिंग एक्सटेंशन से पहले वसंत बूट आवेदन शुरू होता है
@Component
public class InitializationService implements ApplicationListener<ContextRefreshedEvent> {
// inject spring profile active into logback.xml
}
के पाठ्यक्रम काम नहीं कर रहा।
2 - इस
<file>${LOG_PATH}${APP_NAME}${PROFILE}.log</file>
परिणाम logback.xml पर एक संपत्ति का उपयोग करना xyz-spring.profiles.active_IS_UNDEFINED.log
यदि PROFILE सक्रिय प्रोफ़ाइल के लिए कुंजी-मूल्य वाली संपत्ति है, तो इसे – davidxxx
पर काम करना चाहिए PROFILE जो मैं देख रहा हूं वह संपत्ति ** spring.profiles.active ** है जो application.yml में या कमांड के माध्यम से परिभाषित है लाइन। – Leonel