1. 문제
logback.xml 안에서 환경별 세부 설정을 include해서 사용하고있었다.
* logback.xml 위치 : src/main/resources
* logback-${env}.xml 위치 : src/main/resources
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-${env}.xml"/>
</configuration>
그런데, 환경과 상관없이 무조건 테스트환경 logback 설정이 읽혀, 기대한대로 로그가 출력되지 않는 문제가 발견되었다.
조사해보니.. logback은 아래의 우선순위대로 설정파일을 로드하고 있었다.
logback.xml 파일이 먼저 읽히길 바랬으나, include할 logback-test.xml 파일이 먼저 읽혀 문제가 됐던 것이다.
1. logback.configurationFile
2. logback.groovy
3. logback-test.xml
4. logback.xml
2. 해결방법
include할 logback-${env}.xml 파일의 위치를 조정하여 해결하였다.
* logback.xml 위치 : src/main/resources
* logback-${env}.xml 위치 : src/main/resources/logs
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logs/logback-${env}.xml"/>
</configuration>
3. 참고
아래는 설정파일을 읽는 logback 소스이다.
final public static String GROOVY_AUTOCONFIG_FILE = "logback.groovy";
final public static String AUTOCONFIG_FILE = "logback.xml";
final public static String TEST_AUTOCONFIG_FILE = "logback-test.xml";
final public static String CONFIG_FILE_PROPERTY = "logback.configurationFile";
final public static String STATUS_LISTENER_CLASS = "logback.statusListenerClass";
public URL findURLOfDefaultConfigurationFile(boolean updateStatus) {
ClassLoader myClassLoader = Loader.getClassLoaderOfObject(this);
URL url = findConfigFileURLFromSystemProperties(myClassLoader, updateStatus);
if (url != null) {
return url;
}
url = getResource(GROOVY_AUTOCONFIG_FILE, myClassLoader, updateStatus);
if (url != null) {
return url;
}
url = getResource(TEST_AUTOCONFIG_FILE, myClassLoader, updateStatus);
if (url != null) {
return url;
}
return getResource(AUTOCONFIG_FILE, myClassLoader, updateStatus);
}
'Computer Language > Java' 카테고리의 다른 글
| [slf4j] MDC (Mapped Diagnostic Context) (2) | 2012/03/22 |
|---|---|
| [Logback] Logback이 로드될 때 읽는 설정파일 순서 (0) | 2012/03/22 |
| [Spring Batch]Transaction 롤백시 FlatFileItemWriter로 생성한 File도 롤백된다. (0) | 2012/01/04 |
| [Spring] CommonsMultiPartResolver를 사용해 파일을 업로드할경우 임시파일이 쌓이는지 여부 (0) | 2011/12/15 |
| [Hudson 1.371] CPD 플러그인 설치시 Google Collections의 ImmutableList.copyOf 메소드를 찾을 수 없다는 오류 (0) | 2011/12/11 |
| [Maven] 환경변수 property를 읽지 못할 때 (0) | 2011/12/11 |