본문 바로가기

개발/BACK

[SpringBoot] 스프링 부트 mybatis log4jdbc로 쿼리 출력하기

728x90

스프링 부트 mybatis 환경에서 

메소드를 구현해서 실행 시켰을 때, 실행되는 로그를 출력하는 방법을 포스팅하려고 한다.

 

아래는 사용하려는 Log4jdbc-log4j2 드라이버에 대한 레퍼런스다.

제공하는 기능이 궁금하다면 아래 링크를 타고 읽어보자

https://log4jdbc.brunorozendo.com/

 

Log4jdbc-log4j2

This project was imported from https://code.google.com/archive/p/log4jdbc-log4j2/ Original License: Apache License 2.0 log4jdbc-log4j2 is a modification of log4jdbc to natively use Log4j 2 (or SLF4J as usual), that supports JDBC 4.1 to JDBC 3, includes all

log4jdbc.brunorozendo.com

 

구축하려고 하는 개발 환경은 다음과 같다

 

Spring Boot

-application.properties (key - value)

-mybatis

Mysql

 

1.

pom.xml 에 의존성을 추가한다

 

log4jdbc - log4j2

<!-- https://mvnrepository.com/artifact/org.bgee.log4jdbc-log4j2/log4jdbc-log4j2-jdbc4.1 -->
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.13</version>
</dependency>

 

2.

[log4jdbc.log4j.properties] 파일을 생성한다.

 

해당 파일을 생성하는 위치는 

[src/main/resources] 경로 밑에 생성한다.

라이브러리에 명시된 디폴트 경로가 위 경로다.

 

만약 다른 경로에 생성하고 싶다면, 

System 프로퍼티 값을 WAS 환경 변수 값을 추가해주거나

log4jdbc 용 리스너를 구현해서 경로를 바꿔줄 수도 있다.

 

해당 파일을 생성 했으면, 다음과 같이 작성해준다

 

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

maxlinelength는 최대 출력 라인 수인데, 0이면 제한이 없다는 뜻이다

 

 

3.

application.properties 작성 / 수정

 

만약 데이터베이스 관련 설정을 마쳤다면, 

다음과 같이 수정해주면 되고, 설정하지 않았다면 추가해주자

 

기존 설정 

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://[DB IP]:[DP PORT]/[DB SCHEMA NAME]?useSSL=false&allowMultiQueries=true

 

변경 설정

spring.datasource.driver-class-name=net.sf.log4jdbc.sql.jdbcapi.DriverSpy
spring.datasource.url=jdbc:log4jdbc:mysql://[DB IP]:[DP PORT]/[DB SCHEMA NAME]?useSSL=false&allowMultiQueries=true

 

 

또한, 동일한 파일에서 콘솔에 로깅할 때, 어떤 방식으로 로그를 출력할지 

 출력 방법을 상세하게 설정할 수 있다.

 

아래는 내가 필요한 설정을 한 부분이다

 

logging.level.jdbc=off
logging.level.jdbc.sqlonly=off
logging.level.jdbc.sqltiming=info
logging.level.jdbc.resultsettable=info
logging.level.jdbc.audit=off
logging.level.jdbc.resultset=info
logging.level.jdbc.connection=off

 

 

여기까지 프로젝트 세팅이 완료되면, 

다음과 같이 콘솔에 쿼리가

출력되는 화면을 볼 수 있다.

 

 

 

 

 

728x90