개발 단계(alpha, beta, production)마다 파일을 따로 두면 관리도 힘들다. 잘 보이지 않는 단점이 있다. 이를 한 번에 처리할 수 있는 spring boot logback이 있다.
logback-alpha.xml
logback-beta.xml
logback-production.xml
logback 파일에 springProfile을 적용할 수 있도록 할 수 있다. 다음은 logback 파일이다.
<configuration>
<include resource="org/springframework/boot/logging/logback/base.xml"/>
<logger name="org.springframework.web" level="info"/>
<logger name="com.google.gateway" level="debug" />
<springProfile name="production">
<logger name="com.google.gateway" level="info" />
</springProfile>
...
logback.xml 파일에 springProfile을 그대로 설정하면, 에러가 발생한다.
19:52:20.008 [restartedMain] ERROR o.s.b.SpringApplication - Application startup failed
java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected:
ERROR in ch.qos.logback.core.joran.spi.Interpreter@8:38 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@8:38 - no applicable action for [springProfile], current ElementPath is [[configuration][springProfile]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@9:63 - no applicable action for [logger], current ElementPath is [[configuration][springProfile][logger]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@9:63 - no applicable action for [logger], current ElementPath is [[configuration][springProfile][logger]]
at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:238) ~[spring-boot-1.3.0.BUILD-SNAPSHOT.jar:1.3.0.BUILD-SNAPSHOT]
spring boot가 logback 스탠다드 파일인 logback.xml을 어떻게 할 수 없기 때문에 발생한다.
이를 해결하려면, logback-spring.xml 이라는 파일로 복사해서 쓰도록 하면 에러가 발생하지 않는다.
logback.xml -> logback-spring.xml
참고
http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/html/boot-features-logging.html
You cannot use extensions in the standard logback.xml
configuration file since it’s loaded too early. You need to either use logback-spring.xml
or define a logging.config
property.