sql 문의 log 출력을 아름답게 변경하려고 준비 했던 것들이 있었다. ~3.10 에서 사용하던 log 설정 및 CustomFormatter 파일이 있어 그대로 이용중이 었다. 다만, pom 설정을 조금 다르게 가져가다 보니 문제가 발생했다.

 

기본적으로 

https://offbyone.tistory.com/208

 

log4jdbc-remix의 Custom SQL Formatter 만들기(SQL log 줄 바꿈)

SQL Query 로그의 줄을 바꿔서 어느정도 예쁘게 출력하는 방법을 알아보겠습니다. log4jdbc-remix 를 사용해서 쿼리 로그를 만들게 됩니다. 테스트는 전자정부표준프레임워크 비즈니스 템플릿을 MySQL(

offbyone.tistory.com

이 내용을 참조하여 진행하는 것을 원칙으로 하고 설정 끝내고 구동을 했더니 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 오류가 발생하는 것도 아니고 말이다.

다른 문제를 찾을 수도 있지만 저런 라이브러리 충돌도 잘 봐야 할것 같다.

+ Recent posts