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 |