2017-05-12 26 views
6

Mam 2 aplikacje Spring Boot (1.4.1-RELEASE) przy użyciu Logback. Oba pliki konfiguracyjne są mniej więcej takie same, znajdują się w folderze /src/main/resources i nazywają się logback-spring.xml.Spring Boot ignorowanie logback-spring.xml

Obydwa projekty zawierają moduł logujący Spring-Boot-Starter w pliku pom.xml i pobierają wersję 1.1.7.

The Spring Boot config, jak określono w obu 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> 

Jednak po uruchomieniu aplikacji, jeden z nich wydaje się całkowicie zignorować konfigurację logback natomiast pozostałe podnosi go jak oczekiwano.

Jeśli zmienię nazwę pliku na logback.xml dla aplikacji, która nie działała poprawnie, nagle działa dobrze (nawet z profilami sprężynowymi, których używam w nich).

Nie ma widocznej różnicy w żadnej z zastosowanych konfiguracji (co oznacza pom.xml, application.properties itp.).

Czy ktoś wie, dlaczego tak się stało? Uważam, że to zachowanie jest dość mylące.

+0

Prawdopodobnie istnieje różnica między dwiema aplikacjami Spring Boot. Powinieneś pokazać przynajmniej ich pom.xml. Mogą być pomocne. – davidxxx

+0

Czy popełniłeś błąd przy numerze wersji? Logback 1.7.1 nie istnieje –

+0

@AndyWilkinson: Dobrze - to był literówka. Zmieniłem go w poście –

Odpowiedz

1

Wiem, że jest nieco stara, ale miałem ten sam problem i wymyśliłem go ... więc powodem jest po prostu to, że masz logback.xml na swojej ścieżce klasowej (gdzieś, niekoniecznie w twoim projekcie, od którego zaczynasz w moim przypadku była to zależność).

Spójrz tutaj: org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(LoggingInitializationContext, LogFile)

ustawić punkt przerwania, a następnie będzie można zobaczyć.

Jeśli rozruch wiosenny nie znajdzie konfiguracji logback ("logback-test.groovy", "logback-test.xml", "logback.groovy", "logback.xml") w ścieżce klas, logback-wiosna .xml zostanie pobrane.

+0

, która ma sens i jest dokładnie tym, co spowodowało problem - dziękuję –

1

W pliku application.properties określę położenie pliku konfiguracyjnego w ten sposób.

logging.config=path 

Wiosna może nie szukać tej nazwy pliku. Spring doc

one sugerujemy użycie tej nazwy logback-spring.xml zamiast po prostu logback.xml

chciałbym umieścić konfigurację w application.properties jeśli to możliwe.

+4

Oczywiście mogłem to zrobić, ale nie odpowiedziałoby na pytanie, DLACZEGO aplikacja wybiera zignorować tę samą konfigurację, inna aplikacja nie ignoruje. –