전자정부표준프레임워크를 설치하고
템플릿 프로젝트를 임포트했다면 기본적으로 ibatis설정으로 되었을 것이다.
그리고 로그는 log4j에 의해서 로그가 남는다.
log4j2.xml 파일을 찾아
<logger name="java.sql.Connection" level="INFO" additivity="false">
<appender-ref ref="console" />
</logger>
에서 INFO를 DEBUG로 변경하면 로그를 볼 수 있다.
또한 java.sql 객체의 각 항목별로 적용하려면 각 항목별 아래 소스를 추가하면 된다.
<logger name="java.sql.Connection" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="java.sql.PreparedStatement" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="java.sql.Statement" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
<logger name="java.sql.ResultSet" level="DEBUG" additivity="false">
<appender-ref ref="console" />
</logger>
로그 결과물은 다음과 같이 보여진다.
쿼리와 쿼리에 들어가는 파라미터
그리고 쿼리 결과까지
쿼리 결과를 보고 싶지 않다면 java.sql.ResultSet 부분을 지우면 된다.
그런데 문제가 있다.
쿼리는 preparestatement 상태의 쿼리를 보여준다. 즉
SELECT NAME FROM USER WHERE ID = ?
위와같이 파라미터로 들어가는 값은 ? 물음표 표시로 보여진다. 여기에 파리미터를 순서로 적용된 쿼리가 실제 실행되는 쿼리가 된다.
파라미터가 한두개면 각 쿼리에 적용해서 디버깅 하겠지만 파라미터가 많아지고 복잡해 진다면 파라미터를 넣어서 실행하기는 쉽지 않다.
그래서 실행되는 쿼리 자체의 문자열을 받아보고 디버깅을 하고 싶을 것이다.
이런 경우
log4jdbc-remix 를 사용한다.
우선 pom.xml 에 추가
<dependency>
<groupId>org.lazyluke</groupId>
<artifactId>log4jdbc-remix</artifactId>
<version>0.2.4</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.6.1</version>
</dependency>
context-datasource.xml에서 오라클인 경우
<!-- Oracle -->
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${Globals.DriverClassName}"/>
<property name="url" value="${Globals.Url}" />
<property name="username" value="${Globals.UserName}"/>
<property name="password" value="${Globals.Password}"/>
</bean>
<bean id="dataSource-oracle" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
<constructor-arg ref="dataSourceSpied" />
<property name="logFormatter">
<bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
<property name="loggingType" value="MULTI_LINE" />
<property name="sqlPrefix" value="SQL:::" />
</bean>
</property>
</bean>
기존의 datasorce 빈 생성 부분아래에
log4jdbc-remix로 연결하는 설정을 추가해 준다.
기존 빈은 참조 아이디로 사용되므로 알맞게 변경해 주면 된다..
추가된 빈은 dataSource-oracle로 아이디를 설정한다.
왜냐하면 윗부분에 dataSource를 alias로 설정하는 부분이 있으므로 상단부분을 수정하지 않을것이면
그대로 사용하는것이 편하다.