我的一个Spring Boot应用程序在Maven test 阶段出现问题。
在测试期间和"常规"在应用程序运行时,Spring Boot应用程序使用与src/main/resources/logback-spring.xml
非常相似的logback配置文件。此配置文件(可传递)包括Logback配置文件base.xml
和file-appender.xml
。这些配置文件设置 logback属性 LOG_FILE=/tmp/spring.log
。
我认为最佳做法是文件/tmp/server.log
归用户和群组${MY_SPRING_BOOT_APPLICATION}
所有。
Jenkins以用户jenkins
身份运行。 jenkins
没有/tmp/server.log
的写入权限。因此,当Jenkins执行时,JUnit测试失败。
/var/log/
)?/tmp/spring.log
(因此会被破坏)?答案 0 :(得分:11)
在我的Spring Boot应用程序中,我已将haversine formula
添加到RealVector vector = ...
RealMatrix matrix = ...
RealVector result = matrix.preMultiply(vector);
:
<property name="LOG_TEMP" value="./logs"/>
这样,在Maven测试期间,将在当前(测试)工作目录中创建一个单独的日志文件。
答案 1 :(得分:0)
我们遇到了一个问题,即在同一台服务器上运行多个 Spring Boot 模块会导致多个进程尝试写入 /tmp/spring.log
。我们通过更新 logback-spring.xml
在日志名称中包含 ${PID}
解决了这个问题:
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
到
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring-${PID}.log}"/>
相关 Spring 文档:https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/howto-logging.html#howto-configure-logback-for-logging