MyBatis 는 내부적으로 JDBC 의 PreparedStatement를 실행하여 SQL 을 처리한다. 그렇다면 파라미터는 자연스레 ? 로 치환된다는 이야기 같은데.
쿼리가 길거나 서브쿼리가 이어질 경우 일일히 MySQL워크벤치나 SQL 디벨로퍼를 열어 확인하는 것을 번거롭다.
그렇기에 사용하는게 jdbc 로깅 라이브러리다.
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4</artifactId>
<version>1.16</version>
</dependency>
해당의존을 설정하고, 해야할 작업은
1. 로그 설정파일을 추가한다.
2. JDBC연결정보를 추가한다.
src/main/resources 폴더에 log4jdbc.log4j2.properties 파일을 작성한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
이제 JDBC 연결정보를 수정하기위해 사용하는 DBCP 의 설정을 했던 DataSource 구현객체의 설정을 바꾼다.
<property name="driverClassName" value="net.sf.log4jdbc.sql.jdbcapi.DriverSpy" />
<property name="jdbcUrl" value="jdbc:log4jdbc:oracle:thin:@localhost:1521:XE" />
바꿀 것은 driverClassName 프로퍼티의 값을 net.sf.log4jdbc.sql.jdbcapi.DriverSpy 로 JDBC 드라이버 클래스를 바꾸어 주는 것,
JDBC 연결 URL 경로에 log4jdbc 를 추가해주는 것이다.
이후 출력 결과를 보면 로그들과 함께 쿼리 결과가 출력되는 것을 확인 할 수 있다.
<logger> 태그의 name 속성에 로그 이름을 주며, <level> 태그의 value 속성에 로그 레벨을 정해주면 레벨에 따라 로그를 볼 수 있다.
<!-- log4jdbc-log4j2 -->
<logger name="jdbc.audit" >
<level value="warn" />
</logger>
<logger name="jdbc.resultset" >
<level value="warn"/>
</logger>
<logger name="jdbc.connection">
<level value="warn"/>
</logger>
<!-- Root Logger -->
<root>
<priority value="info" />
<appender-ref ref="console" />
</root>
Log4j 의 DTD 에서 에러가 well-form 되지 않았다는 에러가 날 경우, web의 절대경로로 dtd를 정해준다.
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
'MyBatis' 카테고리의 다른 글
<forEach> 를 이용한 반복 insert 쿼리문 생성 (0) | 2020.09.08 |
---|---|
resultMap. (0) | 2020.09.08 |
MyBatis 에서의 자동증가 (Auto-Increatement, sequence) 값 가져오기. (0) | 2020.07.21 |
Mybatis 콘솔에 쿼리문 및, 결과 출력- (0) | 2020.07.19 |
log4j.xml (0) | 2020.07.18 |