sql 문의 log 출력을 아름답게 변경하려고 준비 했던 것들이 있었다. ~3.10 에서 사용하던 log 설정 및 CustomFormatter 파일이 있어 그대로 이용중이 었다. 다만, pom 설정을 조금 다르게 가져가다 보니 문제가 발생했다.
기본적으로
https://offbyone.tistory.com/208
이 내용을 참조하여 진행하는 것을 원칙으로 하고 설정 끝내고 구동을 했더니 WAS가 시작 되지 않고 아래와 같은
아래 같은 오류가 발생한다.
Property 'logFormatter'
threw exception; nested exception is java.lang.NoSuchMethodError:
'void net.sf.log4jdbc.SpyLogFactory.setSpyLogDelegator(net.sf.log4jdbc.SpyLogDelegator)'
context-datasource.xml 파일의 설정
egovframework.cmmn.Log4JdbcCustomFormatter.java 파일은 위 블로그를 참조로 만들었음.
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
<constructor-arg ref="dataSource-Spied" />
<property name="logFormatter">
<bean class="egovframework.cmmn.Log4JdbcCustomFormatter">
<property name="loggingType" value="MULTI_LINE" />
<property name="margin" value="8" />
<property name="sqlPrefix" value="SQL: ################################################################################################################" />
</bean>
</property>
</bean>
<bean id="dataSource-Spied" 설정들 ...
여러 이런식의 파생 문제가 발생하는 경우가 있다. 위처럼 인경우 나 그 근접한 문제인 경우
또는 junit 등의 같이 사용후 오류 등이 있다.
log4j의 여러 라이브리의 충돌 인것이다.
pom.xml 을 확인해 보자.
<!-- log4jdbc driver -->
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.35</version>
</dependency>
<!-- 아래가 충돌 : 나중에 삭제함. -->
<dependency>
<groupId>com.googlecode.log4jdbc</groupId>
<artifactId>log4jdbc</artifactId>
<version>1.2</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
나는 이렇게 되어 있었다. 그렇다. log4jdbc 이 충돌 하고 있던 것이다. 하...
googlecode.log4jdbc 부분 전체를 주석으로 변경하고 처리 하면 되는 것이다.
알길이 없다 싶어서 기록으로 남겨 놓았다. Java 오류가 발생하는 것도 아니고 말이다.
다른 문제를 찾을 수도 있지만 저런 라이브러리 충돌도 잘 봐야 할것 같다.