MyBatis는 SQL을 처리할 때 JDBC의 PreparedStatement를 이용한다.
만약 쿼리문이 복잡한 경우 ? 로 나오는 값이 제대로 되었는지 확인하기가 쉽지 않고 실행된 SQL문의 내용을 정확히 확인하기가 어렵다.
log4jdbc-log4j2 라이브러리는 PreparedStatement에 사용된 ? 가 어떤 값으로 처리되었는지 확인할 수 있다.
그러나 이것은 필수적인건 아니고 옵션이므로 선택해서 적용하면 될거 같다.
pom.xml에 라이브러리 추가
<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
라이브러리를 추가한 후
1) 로그 설정 파일 추가
src/main/resources에 log4jdbc.log4j2.properties
파일 추가함.
아래 내용 작성
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
2) JDBC연결 정보 수정
log4jdbc를 이용하는 경우 JDBC드라이버와 URL 정보를 수정해야한다. (root-context.xml)
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property>
<property name="jdbcUrl" value="jdbc:oracle:thin:@localhost:1521:myoracle"></property>
<property name="username" value="ora_user"></property>
<property name="password" value="hong"></property>
</bean>
<bean id="hikariConfig" class="com.zaxxer.hikari.HikariConfig">
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy"></property>
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:myoracle"></property>
<property name="username" value="ora_user"></property>
<property name="password" value="hong"></property>
</bean>
테스트코드를 실행하다보면 상당히 많은 양의 로그가 출력이 되는데 나중에 익숙해지면 이는 불편하다고 느낄 수 있다.
이때 로그 레벨을 이용해 수정을 해주면 된다.
src/test/resources 의 log4j.xml 파일을 이용하여 설정
(테스트 코드가 실행될 때 로그와 관련 설정은 src/main/resources가 아님을 주의)
<logger name="jdbc.audit">
<level value="warn" />
</logger>
<logger name="jdbc.resultset">
<level value="warn" />
</logger>
<logger name="jdbc.connection">
<level value="warn" />
</logger>
위와 같이 추가적인 logger를 지정해서 처리해준다. 기본설정의 info수준이므로 warn과 같이 높은 레벨의 로그만 기록하게 수정하는 것.
책의 내용입니까?
코드로 배우느 X XXX XXXX 의 내용 맞습니까?
아니면 별개의 내용입니까?