[java] MyBatis에서 로깅 설정하기

MyBatis는 자바 ORM(Object Relational Mapping) 프레임워크로, 데이터베이스와의 상호작용을 쉽게 처리할 수 있도록 도와줍니다. MyBatis를 사용하면서 쿼리 실행 및 데이터베이스와의 통신에 대한 로깅 정보를 확인하고 싶을 때가 있을 것입니다. 이번 글에서는 MyBatis에서 로깅을 설정하는 방법에 대해 알아보겠습니다.

1. 로깅 의존성 추가하기

MyBatis에서 로깅을 사용하려면 먼저 로깅 라이브러리의 의존성을 추가해야 합니다. 대표적으로 Log4j, Logback, SLF4J 등의 라이브러리를 사용할 수 있습니다. 이번 예제에서는 Logback을 사용하도록 하겠습니다.

<!-- pom.xml -->
<dependencies>
    <!-- MyBatis 의존성 추가 -->
    
    <!-- Logback 의존성 추가 -->
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>
</dependencies>

2. 로깅 설정하기

Logback을 이용하여 MyBatis의 로깅을 설정해보겠습니다. 먼저 logback.xml 파일을 프로젝트의 리소스 디렉터리에 생성하고 다음과 같이 설정합니다.

<!-- logback.xml -->
<configuration>

    <!-- 로그 출력 형식 지정 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date [%thread] %-5level %logger{35} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 로그 레벨 설정 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE" />
    </root>

    <!-- MyBatis 로깅 관련 설정 -->    
    <logger name="org.apache.ibatis" level="DEBUG" />
    <logger name="mybatis" level="TRACE" />
</configuration>

위의 설정에서는 MyBatis의 로깅 레벨을 DEBUG로 설정하고 있습니다. 따라서 MyBatis의 디버그 로그 메시지까지 출력될 것입니다.

3. MyBatis 옵션 추가하기

MyBatis의 설정 파일인 mybatis-config.xml에 다음과 같은 옵션을 추가하여 로깅을 활성화할 수 있습니다.

<!-- mybatis-config.xml -->
<configuration>
    <!-- ... -->
    
    <!-- MyBatis 로깅 설정 -->
    <settings>
        <setting name="logImpl" value="LOG4J2"/> <!-- 사용하는 로깅 라이브러리에 맞게 설정 -->
    </settings>
    
    <!-- ... -->
</configuration>

위의 설정에서 logImpl 설정을 추가하면 MyBatis가 해당 로깅 라이브러리를 사용하여 로그를 출력하게 됩니다.

4. 로깅 확인하기

위와 같이 설정한 후, 애플리케이션을 실행하면 MyBatis의 로깅 정보를 확인할 수 있습니다. 이를 통해 쿼리 실행 시간, 매개변수 값 등을 쉽게 파악할 수 있습니다.

로그 출력 예시:

2021-08-20 14:30:00 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
2021-08-20 14:30:01 [main] TRACE org.apache.ibatis.logging.jdbc.BaseJdbcLogger - Connection 1654042986 ope... (Connection, 2, 2) opened.
2021-08-20 14:30:01 [main] TRACE org.apache.ibatis.logging.jdbc.BaseJdbcLogger - ==>  Preparing: SELECT * FROM users WHERE id = ?
2021-08-20 14:30:01 [main] TRACE org.apache.ibatis.logging.jdbc.BaseJdbcLogger - ==> Parameters: 1(Integer)
2021-08-20 14:30:01 [main]TRACE org.apache.ibatis.logging.jdbc.BaseJdbcLogger - <==      Total: 1

이렇게 MyBatis에서 로깅을 설정하여 쿼리 실행과 관련된 정보를 확인할 수 있습니다. 로깅은 개발, 디버깅, 성능 분석 등에 매우 유용한 도구이므로 적절하게 활용하면 좋습니다.

참고 자료