问题描述
在我的Spring Boot应用程序中,我添加<property name="LOG_TEMP"
value="./logs"/>
到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>
这样,在Maven测试期间,将在当前(测试)工作目录中创建一个单独的日志文件。
解决方法
我的一个Spring Boot应用程序在其Maven 测试 阶段遇到了问题。
在测试和“常规”应用程序运行时期间,Spring
Boot应用程序都使用与相似的logback配置文件src/main/resources/logback-
spring.xml
。此配置文件(以传递方式)包括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测试失败。
- 什么是配置日志记录的最佳方法,以使其在Jenkins 带有测试的构建 过程中运行良好, 并 在利用Spring Boot的 SysV init.d 服务功能(将日志放入)时设置 每日滚动日志记录 ? __
/var/log/
/tmp/spring.log
如果同时运行两个或多个Spring Boot应用程序,文件是否会同时被修改(因此被破坏)?