2017-05-12 11 views
6

को अनदेखा कर रहा है मेरे पास लॉगबैक का उपयोग कर 2 स्प्रिंग बूट (1.4.1-रिलीज) कंसोल एप्लिकेशन हैं। दोनों विन्यास फाइलें कम या कम समान हैं, मेरे /src/main/संसाधन फ़ोल्डर में स्थित हैं और लॉगबैक-spring.xml नामित हैं।स्प्रिंग बूट लॉगबैक-spring.xml

दोनों परियोजनाओं में उनके pom.xml में मेवेन निर्भरता वसंत-बूट-स्टार्टर-लॉगिंग शामिल है और लॉगबैक संस्करण 1.1.7 प्राप्त करें।

स्प्रिंग बूट config के रूप में दोनों poms में परिभाषित:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.4.1.RELEASE</version> 
    <relativePath /> 
</parent> 

<groupId>d.m.v.app-a</groupId> 
<artifactId>my-app-a</artifactId> 
<version>1.0.16-SNAPSHOT</version> 
<packaging>jar</packaging> 

<dependencies> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-web</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-actuator</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-security</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-logging</artifactId> 
    </dependency> 
</dependencies> 

हालांकि, जब अनुप्रयोगों को चलाने उनमें से एक पूरी तरह से logback विन्यास की अनदेखी करने, जबकि अन्य की पसंद यह उम्मीद की तरह लगता है।

यदि मैं फ़ाइल नाम को पर लॉगबैक.एक्सएमएल को उस एप्लिकेशन के लिए बदलता हूं जो ठीक से काम नहीं करता है तो यह अचानक ठीक काम करता है (वसंत प्रोफाइल के साथ भी मैं उन में उपयोग कर रहा हूं)।

इसमें शामिल किसी भी कॉन्फ़िगरेशन में कोई स्पष्ट अंतर नहीं है (जिसका अर्थ है pom.xml, application.properties, आदि)।

क्या कोई जानता है कि ऐसा क्यों हो सकता है? मुझे यह व्यवहार बल्कि भ्रमित लगता है।

+0

आपके पास शायद दो स्प्रिंग बूट एप्लिकेशन के बीच एक अंतर है। आपको कम से कम उनके pom.xml दिखाना चाहिए। ये सहायक हो सकता है। – davidxxx

+0

क्या आपने संस्करण संख्या के साथ कोई गलती की है? लॉगबैक 1.7.1 मौजूद नहीं है –

+0

@ एंडी विल्किनसन: दाएं - यह एक टाइपो था। मैंने इसे –

उत्तर

1

मुझे पता है कि यह कुछ हद तक पुराना है, लेकिन मुझे एक ही समस्या थी और इसे समझ लिया गया ... इसलिए कारण यह है कि आपके क्लासपाथ पर लॉगबैक.एक्सएमएल है (कहीं, आपके प्रोजेक्ट में जरूरी नहीं है , मेरे मामले में यह एक निर्भरता थी)।

यहाँ एक नज़र डालें: org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)

एक ब्रेकपाइंट सेट है, तो आप देखेंगे।

यदि वसंत बूट को क्लासपाथ पर लॉगबैक कॉन्फ़िगरेशन ("लॉगबैक-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml") नहीं मिलता है, तो लॉगबैक-वसंत .xml उठाया जाएगा।

+0

जो वास्तव में बहुत समझ में आता है और वास्तव में समस्या का कारण बनता है - धन्यवाद –

1

मैं application.properties में कॉन्फ़िगरेशन फ़ाइल का स्थान निर्दिष्ट करता हूं।

logging.config=path 

वसंत शायद इस फ़ाइल का नाम नहीं देख रहे हैं। Spring doc

वे इस नाम logback-spring.xml उपयोग करने का सुझाव बजाय logback.xml

मैं application.properties में विन्यास जगह यदि संभव हो जाएगा

+4

में कोई अंतर नहीं दिखाता है बेशक मैं ऐसा कर सकता हूं लेकिन यह इस सवाल का जवाब नहीं देगा कि एप्लिकेशन क्यों चुनता है उसी कॉन्फ़िगरेशन को अनदेखा करने के लिए अन्य एप्लिकेशन अनदेखा नहीं करता है। –