
MyBatis 쿼리가 위와 같이 불편하게 출력되고 있습니다.
한줄짜리 쿼리로그는 ? 를 아래 Parameters 에 출력된 '메모(String)'로 수동으로 넣어서 쿼리를 조회하면 되겠지만,
쿼리가 100줄이상에 parameter가 10개 넘어가면 일일이 찾아 바꿔 조회하는 것도 번거롭습니다.
파라미터가 바인딩된 쿼리로 pretty 하게 출력되도록 설정해보겠습니다.
1. build.gradle에 log4jdbc dependency추가.
/** for MyBatis Log Beautifier. using log4jdbc */
implementation('org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16')
2. main/resources/ 하위에 log4jdbc.log4j2.properties 파일 추가하고 아래와 같은 값을 추가.
log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength = 0
log4jdbc.auto.load.popular.drivers=false
log4jdbc.drivers=com.mysql.cj.jdbc.Driver
3. application.yml 설정파일 > data-source의 driver-class-name을 net.sf.log4jdbc.sql.jdbcapi.DriverSpy 로 변경. url은 jdbc:log4jdbc:mysql://.... 와 같이 중간에 log4jdbc를 추가.
spring:
# Database connection setting.
datasource:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
url: jdbc:log4jdbc:mysql://218.153.171.34:3306/map?autoReconnect=true
4. main/resources/ 에 logback.xml 파일을 추가하고 아래와 같이 설정.
sqltiming 로그만 DEBUG 로 출력되도록 해볼까요.
<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
<include resource="org/springframework/boot/logging/logback/defaults.xml"/>
<include resource="org/springframework/boot/logging/logback/console-appender.xml"/>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%highlight([%-5level]) [%d{yy-MM-dd HH:mm:ss}] %cyan(%logger{36})\n - %msg%n</pattern>
</encoder>
</appender>
<logger name="jdbc" level="OFF"/>
<logger name="jdbc.connection" level="OFF"/>
<logger name="jdbc.sqlonly" level="OFF"/> <!-- 파라미터를 셋팅해서 출력-->
<logger name="jdbc.sqltiming" level="DEBUG"/> <!--쿼리 실행 속도 표시-->
<logger name="jdbc.resultsettable" level="OFF"/> <!-- 결과값을 보여줌-->
<logger name="log4jdbc.debug" level="OFF"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<root level="INFO">
<appender-ref ref="STDOUT"/>
</root>
</configuration>
이제 출력결과를 확인하면 아래와 같이 resultSet에 파라미터를 대입한 상태로 출력 됩니다.
Mapper에 작성한 SQL문의 쿼리 정렬 상태 그대로 출력되고 있군요.

'DataBase > My-Batis' 카테고리의 다른 글
Out Of Memory Error. MyBatis Batch Insert 시 OOME 방지. (1) | 2023.07.03 |
---|---|
[MyBatis/MySQL] Result Map을 조심 하세요. (0) | 2021.03.02 |
[MyBatis/MySQL] 쿼리 작성시 Tip 모음 (0) | 2021.03.01 |
Delete 문에 이상이 없어보이는데 Syntax 에러. (0) | 2021.03.01 |
Spring-boot 와 MyBatis 연결 설정. (0) | 2021.02.27 |

MyBatis 쿼리가 위와 같이 불편하게 출력되고 있습니다.
한줄짜리 쿼리로그는 ? 를 아래 Parameters 에 출력된 '메모(String)'로 수동으로 넣어서 쿼리를 조회하면 되겠지만,
쿼리가 100줄이상에 parameter가 10개 넘어가면 일일이 찾아 바꿔 조회하는 것도 번거롭습니다.
파라미터가 바인딩된 쿼리로 pretty 하게 출력되도록 설정해보겠습니다.
1. build.gradle에 log4jdbc dependency추가.
/** for MyBatis Log Beautifier. using log4jdbc */ implementation('org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16')
2. main/resources/ 하위에 log4jdbc.log4j2.properties 파일 추가하고 아래와 같은 값을 추가.
log4jdbc.spylogdelegator.name = net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator log4jdbc.dump.sql.maxlinelength = 0 log4jdbc.auto.load.popular.drivers=false log4jdbc.drivers=com.mysql.cj.jdbc.Driver
3. application.yml 설정파일 > data-source의 driver-class-name을 net.sf.log4jdbc.sql.jdbcapi.DriverSpy 로 변경. url은 jdbc:log4jdbc:mysql://.... 와 같이 중간에 log4jdbc를 추가.
spring: # Database connection setting. datasource: driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy url: jdbc:log4jdbc:mysql://218.153.171.34:3306/map?autoReconnect=true
4. main/resources/ 에 logback.xml 파일을 추가하고 아래와 같이 설정.
sqltiming 로그만 DEBUG 로 출력되도록 해볼까요.
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <include resource="org/springframework/boot/logging/logback/defaults.xml"/> <include resource="org/springframework/boot/logging/logback/console-appender.xml"/> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%highlight([%-5level]) [%d{yy-MM-dd HH:mm:ss}] %cyan(%logger{36})\n - %msg%n</pattern> </encoder> </appender> <logger name="jdbc" level="OFF"/> <logger name="jdbc.connection" level="OFF"/> <logger name="jdbc.sqlonly" level="OFF"/> <!-- 파라미터를 셋팅해서 출력--> <logger name="jdbc.sqltiming" level="DEBUG"/> <!--쿼리 실행 속도 표시--> <logger name="jdbc.resultsettable" level="OFF"/> <!-- 결과값을 보여줌--> <logger name="log4jdbc.debug" level="OFF"/> <logger name="jdbc.audit" level="OFF"/> <logger name="jdbc.resultset" level="OFF"/> <root level="INFO"> <appender-ref ref="STDOUT"/> </root> </configuration>
이제 출력결과를 확인하면 아래와 같이 resultSet에 파라미터를 대입한 상태로 출력 됩니다.
Mapper에 작성한 SQL문의 쿼리 정렬 상태 그대로 출력되고 있군요.

'DataBase > My-Batis' 카테고리의 다른 글
Out Of Memory Error. MyBatis Batch Insert 시 OOME 방지. (1) | 2023.07.03 |
---|---|
[MyBatis/MySQL] Result Map을 조심 하세요. (0) | 2021.03.02 |
[MyBatis/MySQL] 쿼리 작성시 Tip 모음 (0) | 2021.03.01 |
Delete 문에 이상이 없어보이는데 Syntax 에러. (0) | 2021.03.01 |
Spring-boot 와 MyBatis 연결 설정. (0) | 2021.02.27 |