본문 바로가기
Programming/Java_Spring

MyBatis에서 SQL로그 남기기.

by 곰네Zip 2023. 11. 3.

Mybatis를 이용해서 SQL을 처리하다보면 디버깅을 해야할 때가 있다.

근데 무슨 쿼리가 어떻게 나가는지 알아야할것 아닌가?

그래서 로그를 남겨야한다.

 

1. maven에 패키지 설정

<dependency>
    <groupId>org.bgee.log4jdbc-log4j2</groupId>
    <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
    <version>1.16</version>
</dependency>

위와 같이 로그 남기기 위한 패키지를 정하고

 

2. log4jdbc.log4j2.properties파일 추가

resources패키지 밑에 log4jdbc.log4j2.properties파일을 만들고, 아래와 같이 내용 채우자.

log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0

이 파일에 위 내용을 채워준다.

 

3. logback-conf.xml파일에 다음과 같이 로그와 관련된 설정들을 한다.

<logger name="jdbc.sqlonly" level="OFF" /> <!-- SQL문만 표시 -->
<logger name="jdbc.sqltiming" level="INFO" /> <!-- SQL문 + 수행시간 표시 -->
<logger name="jdbc.resultsettable" level="INFO" /> <!-- Result Table을 표시 -->
<logger name="jdbc.audit" level="OFF" /> <!-- ResultSet을 제외한 모든 정보를 표시 -->
<logger name="jdbc.resultset" level="OFF" /> <!-- ResultSet을 포함한 모든 정보를 표시 표시 -->
<logger name="jdbc.connection" level="OFF" /> <!-- DB연결/해제 관련 로그 표시 -->

 

4. DB연결정보를 수정한다. application.yml에 다음과 같이 지정된 연결정보를 수정한다.

  datasource:
  #변경 전
    url: jdbc:mysql://디비주소?useSSL=false&characterEncoding=utf8
    driver-class-name: com.mysql.cj.jdbc.Driver
  #변경 후  
    url: jdbc:log4jdbc:mysql://디비주소?useSSL=false&characterEncoding=utf8
    driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy

 

jdbc:mysql -> jdbc:log4jdbc:mysql로 log4jdbc가 추가될 것.

반응형

댓글