2016-06-28 41 views
5

Jedna z moich aplikacji Spring Boot sprawia problemy podczas fazy testowej Maven .Spring Boot używa pliku /tmp/spring.log podczas testowania

Zarówno podczas testowania, jak i "regularnego" środowiska wykonawczego aplikacji, aplikacja Spring Boot używa pliku konfiguracyjnego logowania bardzo podobnego do pliku src/main/resources/logback-spring.xml. Ten plik konfiguracyjny (przechodnie) zawiera pliki konfiguracyjne odliczaniai file-appender.xml. Te pliki konfiguracyjne ustawiają właściwość logback LOG_FILE=/tmp/spring.log.

Domyślam się, że plik /tmp/server.log jest własnością użytkownika i grupy ${MY_SPRING_BOOT_APPLICATION}.

Jenkins działa jako użytkownik jenkins. jenkins nie ma uprawnień do zapisu dla /tmp/server.log. Dlatego testy JUnit kończą się niepowodzeniem po wykonaniu przez Jenkinsa.

  • Jaki jest najlepszy sposób, aby skonfigurować rejestrowanie tak, że działa dobrze podczas Jenkins build-z-testówi tak, że tworzy codziennie rejestrowanie toczenia przy wykorzystaniu Spring Boot's SysV init.d service functionality (co stawia kłody pod /var/log/)?
  • Czy plik /tmp/spring.log zostanie zmodyfikowany (a tym samym uszkodzony), jeśli jednocześnie uruchomione są co najmniej dwie aplikacje Spring Boot?

Odpowiedz

5

W mojej aplikacji Boot Wiosna, dodałem <property name="LOG_TEMP" value="./logs"/> do src/test/resources/logback-test.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<configuration scan="true"> 
    <property name="LOG_TEMP" value="./logs"/> 
    <include resource="org/springframework/boot/logging/logback/base.xml"/> 

    <logger name="com.example" level="INFO"/> 


    <root level="WARN"> 
     <appender-ref ref="CONSOLE"/> 
    </root> 

</configuration> 

W ten sposób, podczas testów Maven, oddzielny plik rejestrowania zostanie utworzony w bieżącej (testowania) katalogu roboczym.

Props to welcor for helping out.

+1

Upewnij się, że zastąpiłeś właściwość przed właściwością , jak pokazano tutaj. –