개요

리팩토링 하면서 실행 시간이랑 sql 쿼리 출력하려고 한다.

jpa는 해봤는데, mybatis 설정은 처음 해서 적어 놓기


방법

개발 환경 

Spring Boot + Maven + MyBatis + PostgreSQL

 

  • Pom.xml에 의존성 추가 : log4jdbc-log4j2
        <dependency>
            <groupId>org.bgee.log4jdbc-log4j2</groupId>
            <artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
            <version>1.16</version>
        </dependency>

 

  • application.properties에 작성한 기존 datasource 코드 변경하기

기존 설정 

spring.datasource.url=jdbc:postgresql://localhost:5432/mydb
spring.datasource.driver-class-name=org.postgresql.Driver

 

변경

spring.datasource.url=jdbc:log4jdbc:postgresql://localhost:5432/mydb
spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy

 

  • src/main/resources에 log4jdbc.log4j2.properties 파일 생성

Slf4jSpyLogDelegator : 로그 출력 시 slf4j 사용 

log4j2만 쓰거나 log4j2랑 slf4j 같이 쓰면 로그 복잡해져서 slf4j로만 로그 나오게 설정

 

maxlinelength : 출력 길이 제한 : 0이면 무제한

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

 

  • application.properties에 코드 추가 

logging.level.root 모든 로거의 기본값 설정
logging.level.jdbc.sqltiming
sql 쿼리 실행 시간 출력
logging.level.jdbc.sqlonly sql 쿼리만 출력
logging.level.jdbc.resultsettable sql 쿼리 실행 결과를 테이블 형식으로 출력 
logging.level.jdbc.audit jdbc 호출 정보
logging.level.jdbc.connection db 연결/해제
logging.level.jdbc.resultset sql 쿼리 결과  
logging.level.org.springframework.cache 캐시 출력

 

  • 출력 완료

참고

https://hdhdeveloper.tistory.com/122

https://kafcamus.tistory.com/23