Logging Spring引导在测试期间使用/tmp/Spring.log文件
我的一个Spring引导应用程序在Maven测试阶段出现问题 在测试和“常规”应用程序运行时期间,Spring引导应用程序都使用一个类似于的logback配置文件。此配置文件(可传递)包括logback配置文件和。这些配置文件设置了一个logback属性Logging Spring引导在测试期间使用/tmp/Spring.log文件,logging,spring-boot,logback,Logging,Spring Boot,Logback,我的一个Spring引导应用程序在Maven测试阶段出现问题 在测试和“常规”应用程序运行时期间,Spring引导应用程序都使用一个类似于的logback配置文件。此配置文件(可传递)包括logback配置文件和。这些配置文件设置了一个logback属性LOG\u FILE=/tmp/spring.LOG 我想最好的做法是,文件/tmp/server.log归用户和组${MY\u SPRING\u BOOT\u APPLICATION}所有 Jenkins以用户身份运行Jenkinsjenkin
LOG\u FILE=/tmp/spring.LOG
我想最好的做法是,文件/tmp/server.log
归用户和组${MY\u SPRING\u BOOT\u APPLICATION}
所有
Jenkins以用户身份运行Jenkins
jenkins
没有/tmp/server.log
的写入权限。因此,JUnit测试在由Jenkins执行时失败
- 配置日志记录的最佳方法是什么,以便它在Jenkins构建过程中通过测试和运行良好,从而在利用时设置每日滚动日志记录(将日志放入
)/var/log/
- 如果有两个或多个spring启动应用程序同时运行,文件
是否会被同时修改(并因此被破坏)/tmp/spring.log
添加到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>
.我们遇到一个问题,在同一台服务器上运行多个Spring引导模块会导致多个进程尝试写入/tmp/Spring.log
。我们通过更新logback spring.xml
以在日志名中包含${PID}
来解决这个问题:
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring.log}"/>
到
相关的Spring文档:请确保将属性覆盖放在属性之前,如下所示。
<property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}}/spring-${PID}.log}"/>