본문 바로가기
프로그래밍

logback if condition 사용 시 주의 사항

by 탁구치는 개발자 2013. 12. 23.


logback을 이용하여 개발, 스테이징, 라이브 환경에 따른 로그 레벨을 분기하기 위해서 다음과 같이 조건문을 추가하였다.

<if condition='p("spring.profiles.active").equals("dev")'>

<then><property name="LOG_LEVEL" value="DEBUG" /></then>

</if>

<if condition='p("spring.profiles.active").equals("rc")'>

        <then><property name="LOG_LEVEL" value="INFO" /></then>

</if>

<if condition='p("spring.profiles.active").equals("live")'>

<then><property name="LOG_LEVEL" value="INFO" /></then>

</if>

 

<root level="${LOG_LEVEL}">

<appender-ref ref="APP_FILE" />

</root>


spring.profiles.active의 값은 java 실행 시 -Dspring.profiles.active="dev" 아규먼트를 추가하여 각 서버를 구분지었다. 헌데 웹 애플리케이션을 구동하면 로그 레벨이 각 환경에 맞게 적용이 안 된다.


문제는 janino library가 추가되어 있어야 했다. 

pom.xml 파일에 아래 라이브러리를 추가하여 문제 해결

<dependency>

<groupId>org.codehaus.janino</groupId>

        <artifactId>janino</artifactId>

        <version>2.6.1</version>

</dependency>