programing

테스트 중에 Spring Boot에서 /tmp/spring.log 파일을 사용

bestprogram 2023. 7. 31. 21:33

테스트 중에 Spring Boot에서 /tmp/spring.log 파일을 사용

내 Spring Boot 애플리케이션 중 하나가 Maven 테스트 단계에서 문제를 일으킵니다.

Spring Boot 응용 프로그램은 테스트 중과 "일반" 응용 프로그램 런타임 모두에서 와 매우 유사한 로그백 구성 파일을 사용합니다.이 구성 파일(일시적)에는 로그백 구성 파일 및 가 포함됩니다.이 구성 파일은 로그백 속성을 설정합니다. LOG_FILE=/tmp/spring.log.

그 파일을 사용하는 것이 가장 좋은 방법인 것 같습니다./tmp/server.log사용자 및 그룹이 소유함${MY_SPRING_BOOT_APPLICATION}.

젠킨스가 사용자로 실행됨jenkins.jenkins에 대한 쓰기 권한이 없습니다./tmp/server.log따라서 Junit 테스트는 Jenkins에 의해 실행될 때 실패합니다.

  • Jenkins With Test 동안 잘 작동하고 Spring BootSysV init.d 서비스 기능을 활용할 때 매일 롤링 로깅을 설정하기 위해 로깅을 구성하는 가장 좋은 방법은 무엇입니까?/var/log/)?
  • 윌 파일/tmp/spring.log동시에 두 개 이상의 Spring Boot 애플리케이션이 실행되는 경우 수정(따라서 중단)됩니까?

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 모듈을 실행하여 여러 프로세스가 다음에 쓰기를 시도하는 문제가 발생했습니다./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}"/>

관련 스프링 문서: https://docs.spring.io/spring-boot/docs/1.5.x/reference/html/howto-logging.html#howto-configure-logback-for-logging

언급URL : https://stackoverflow.com/questions/38081145/spring-boot-uses-tmp-spring-log-file-during-testing