문제
로컬에서 프로젝트를 받아서 실행하려고 하니 아래와 같은 에러가 나왔다.
java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[ACCESS] - Failed to create parent directories for [/home/www/logs/project/access/access.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[ACCESS] - openFile(/home/www/logs/project/access/access.log,true) call failed. java.io.FileNotFoundException: /home/www/logs/project/access/access.log (No such file or directory)
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - Failed to create parent directories for [/home/www/logs/project/application/project.log]
ERROR in ch.qos.logback.core.rolling.RollingFileAppender[FILE] - openFile(/home/www/logs/project/application/project.log,true) call failed. java.io.FileNotFoundException: /home/www/logs/project/application/project.log (No such file or directory)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:169)
at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80)
at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60)
at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:118)
at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:306)
at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:281)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:239)
at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216)
at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:127)
at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:80)
at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:53)
at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:345)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308)
...
원인
filepath로 나온 것을 보아, Logback의 filepath 문제라고 생각했다.
applicaiton-dev.yml의 logging을 보면 file에 로그 파일 path를 설정하는 path 부분이 있다.
프로젝트 터미널에서 home에 직접 www 폴더를 생성하려고 해도 루트 권한이 없기 떄문에 Operation not supported 에러가 난다.
해결
루트 권한이 필요없는 tmp 밑에 logs라는 폴더를 Logback의 filepath로 설정했다.
home과 다르게 tmp는 폴더를 생성할 수 있는 것을 확인할 수 있다.
Logback의 설정을 아래와 같이 변경하여 문제를 해결하였다.
참고 자료
'트러블슈팅' 카테고리의 다른 글
MySQL 쿼리 속도 향상. Explain으로 실행 계획 보기. Index 설정 (0) | 2023.07.04 |
---|---|
Swagger 빌드 문제. Unable to load URL ref: https://opensource.zalando.com/problem/schema.yaml (0) | 2023.05.17 |
SLF4J의 Log파일로 인한 서버의 Disk 공간 부족 문제 발생; Logback의 RollingFile 설정 (0) | 2023.04.24 |
ktlint로 인한 Build Fail. ktlintMainSourceSetCheck Failed (0) | 2023.04.20 |
Mockito에서 의존성 주입 받은 Spy 객체를 다른 Spy객체에 의존성 주입하기 (0) | 2023.04.15 |