One of my Spring Boot applications makes problems during its Maven test phase.
Both during testing and "regular" application runtime, the Spring Boot application uses a logback configuration file very similar to src/main/resources/logback-spring.xml
. This configuration file (transitively) includes the logback configuration files base.xml
and file-appender.xml
. These configuration files set a logback property LOG_FILE=/tmp/spring.log
.
I guess it is best practice that file /tmp/server.log
is owned by user and group ${MY_SPRING_BOOT_APPLICATION}
.
Jenkins runs as user jenkins
. jenkins
does not have write permissions for /tmp/server.log
. Therefore the JUnit tests fail when executed by Jenkins.
/var/log/
)?/tmp/spring.log
be modified (and therefore be broken) concurrently if there are two or more Spring Boot applications running at the same time?In my Spring Boot application, I have added <property name="LOG_TEMP" value="./logs"/>
to 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>
This way, during Maven testing, a separate logging file will be created in the current (testing) working directory.