본문 바로가기
Mybatis/성능 및 유지보수 팁

로그 설정 및 SQL 디버깅

by DEVLIB 2025. 4. 18.
728x90

1. 로그 목적: 어떤 내용을 보고 싶은가?

로그 내용 보기 위해 필요한 설정
실행된 SQL 문 org.mybatis or org.apache.ibatis
바인딩된 파라미터 JDBC 로그 (spring.datasource)
전체 트랜잭션 흐름 org.springframework.transaction

2. application.yml 설정 예시

logging:
  level:
    root: INFO
    org.mybatis: DEBUG
    org.apache.ibatis: DEBUG
    org.mybatis.spring.SqlSessionFactoryBean: DEBUG
    org.springframework.transaction: DEBUG
    jdbc.sqlonly: DEBUG   # log4jdbc 사용 시
  pattern:
    console: "%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n"

3. STDOUT_LOGGING 설정 (MyBatis 자체 설정)

▶ mybatis-config.xml 또는 yml 설정

mybatis:
  configuration:
    log-impl: STDOUT_LOGGING

 

또는 XML 방식:

<configuration>
  <settings>
    <setting name="logImpl" value="STDOUT_LOGGING"/>
  </settings>
</configuration>

콘솔에 SQL + 바인딩 정보가 출력됩니다.


로그 예시 출력

==>  Preparing: SELECT * FROM users WHERE id = ?
==> Parameters: 3(Integer)
<==      Total: 1

4. 더 강력한 SQL 디버깅: log4jdbc-log4j2

▶ log4jdbc 의존성 추가 (Gradle 기준)

implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'

▶ 데이터소스를 log4jdbc로 감싸기

spring:
  datasource:
    url: jdbc:log4jdbc:mysql://localhost:3306/mydb
    driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy

▶ SQL 로그 예시 (log4jdbc)

2025-04-16 14:12:30 DEBUG jdbc.sqlonly - SELECT * FROM users WHERE id = 3;

실제 DB에 전달된 쿼리 형태로 보기 좋아요.


5. IDE에서 로그 출력 보기 팁

  • IntelliJ 기준: Run 창 또는 Console 탭에서 확인
  • 필터: SQL, DEBUG, mybatis 등으로 로그 분류 가능
  • 색상 강조: log4jdbc는 컬러 로그 출력도 가능

마무리 요약

목적 설정
SQL 로그 출력 log-impl: STDOUT_LOGGING
파라미터 디버깅 DEBUG 레벨 설정
전체 SQL 보기 log4jdbc 사용 (추천)
실무 환경 로그 레벨 INFO 이하로 제한 권장

추천 설정

logging.level:
  root: INFO
  org.apache.ibatis: DEBUG
  org.mybatis: DEBUG
  org.springframework.jdbc.core: DEBUG
mybatis.configuration.log-impl: STDOUT_LOGGING
LIST

'Mybatis > 성능 및 유지보수 팁' 카테고리의 다른 글

MyBatis Generator 소개  (1) 2025.04.18
Mapper 관리 전략 (XML vs 주석 기반)  (0) 2025.04.18
N+1 문제 해결  (1) 2025.04.17