Tomcat 7 + SLF4j (logback) 을 이용하여 로그를 남기고 있었다.
그러다 tomcat 8로 업그레이드 하면서,
갑자기 일부 WAS 모듈에서 log가 남지 않는 현상 발생함.
원인을 파악해보니..
다름과 같은 내용인 catalina.cout에 생성됨 (JAVA -verbose:class 옵션 추가)
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/block/ccpkg/app/cc_drive/webapps/fsw/WEB-INF/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/block/ccpkg/app/cc_drive/webapps/fsw/WEB-INF/lib/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. |
원인은 logback의 jar 인 logback-classic이 로딩이 뒤에 되면서, log4j로 동작하게 됨.
logback.xml만 존재하여, default log4j로 동작하여 문제 발생.
[해결방법]
인터넷으로 여러군데 다 확인해 보았으나..
마땅한 방법이 없었음.
그래서..
해당 was pom 에서 slf4j-log4j12 의 dependency를 찾아보니.. zookeeper 였음
그래서 해당 library를 excluding 해줌..
<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.6</version> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> </exclusions> </dependency> .... |
재 빌드 후 결과
SLF4J: Class path contains multiple SLF4J bindings. SLF4J: Found binding in [jar:file:/block/ccpkg/app/cc_stream/webapps/snw/WEB-INF/lib/logback-classic-1.1.7.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: Found binding in [jar:file:/block/ccpkg/app/cc_stream/webapps/snw/WEB-INF/lib/slf4j-log4j12-1.7.2.jar!/org/slf4j/impl/StaticLoggerBinder.class] SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. |
logback jar가 먼저 로딩되는 것 확인!!
그리고 해당 log 가 정상적으로 나오는 것 확인됨.
아 어렵다.