MyBatis-Plus SQL 쿼리 로그 출력 구성 방법

데이터베이스 연동 시 실제 발송되는 문장을 추적하는 과정은 디버깅 효율성을 높이는 핵심 요소입니다. MyBatis-Plus 는 이를 간편하게 처리할 수 있는 몇 가지 표준화된 절차를 제공합니다. 아래에서는 설정 파일 활용부터 코드로 직접 제어하는 방법까지 정리해 보겠습니다.

1. 설정 파일을 통한 활성화

가장 일반적으로 사용되는 방법은 애플리케이션 설정 파일에 해당 옵션을 명시하는 것입니다. 이를 통해 스탠다드 아웃풋으로 SQL 을 직접 찍어볼 수 있습니다.

application.properties 사용 시

속성 파일 내에서 로깅 구현체를 지정하면 즉시 적용됩니다.

# MyBatis-Plus 로깅 인터페이스 지정
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

application.yml 사용 시

YAML 형식을 사용하는 경우 위 내용을 계층 구조로 표현합니다.

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

2. 로깅 프레임워크 통합 (SLF4J)

표준 출력만으로는 관리가 어렵기 때문에, 주로 프로젝트에서 사용하는 로그 유틸리티와 연동하는 것이 좋습니다. 특히 SLF4J 는 대부분의 스프링 부트 프로젝트에서 기본으로 채택하므로 이를 기준으로 설정하는 것을 권장합니다.

MyBatis 계열 라이브러리는 기본적으로 제공하는 로거 종류 중 하나를 선택할 수 있으며, SLF4J 를 사용할 경우 외부 로그 파일 관리 도구를 함께 활용할 수 있습니다.

3. 자바 코드로 직접 설정

설정 파일 대신 빌드 프로세스 중에 클래스로 제어하고 싶다면 팩토리 빈 생성자를 오버라이드하여 적용할 수 있습니다.

@Configuration
public class DatabaseConfig {

    @Autowired
    private DataSource dataConnection;

    @Bean(name = "mpSqlSessionFactory")
    public SqlSessionFactory constructSessionFactory() {
        // MyBatis+ 전용 세션 팩토리 빌더 준비
        var factoryBuilder = new MybatisSqlSessionFactoryBean();
        factoryBuilder.setDataSource(dataConnection);
        
        // 로거 인터페이스를 SLF4J 기반으로 변경
        org.apache.ibatis.logging.LogFactory.useSlf4jLogging();
        
        return factoryBuilder.getObject();
    }
}

4. 세부 로그 레벨 조절 (Logback)

SLF4J 와 결합하여 Logback 을 사용할 경우, 특정 패키지의 로그 레벨만을 DEBUG 로 조정하여 원하는 만큼의 정보를 필터링하여 확인할 수 있습니다.

<configuration>
  <!-- 콘솔용 어펜더 설정 -->
  <appender name="CONSOLE_LOG" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%highlight(%d{HH:mm:ss.SSS}) [%thread] %-5level %logger{36} - %msg%n</pattern>
    </encoder>
  </appender>

  <!-- MyBatis 관련 로그만 디버그 허용 -->
  <logger name="com.baomidou.mybatisplus" level="DEBUG" />
  <logger name="org.mybatis" level="DEBUG" />

  <root level="INFO">
    <appender-ref ref="CONSOLE_LOG" />
  </root>
</configuration>

위 설정을 적용하면 INFO 레벨은 기본대로 유지되다가 마이바티스 플러스 패키지 내부 동작과 SQL 실행 시에만 DEBUG 정보가 화면에 출력됩니다.

태그: MyBatis-Plus spring-boot SLF4J Logback database-debugging

6월 13일 19:37에 게시됨