본문 바로가기
프로그래밍 기타

mybatis 쿼리 출력 log4jdbc-remix 쉬운 사용방법

by 애플 로그 2023. 5. 18.
반응형

ibatis에서 mybatis로 모듈을 업그레이드 하고나니, 로그가 개행처리가 안되고 가독성이 떨어진다.

이럴때 log4jdbc-remix 라는 라이브러리를 이용해서 쿼리를 결과를 직관성있게 찍을수 있으며 가독성을 높힐수있다.

로그를 보기좋게 이쁘게 찍어준다는 말이다.

 

[적용전]

한줄로 찎히는것도 불편하고, 쿼리파라미터 또한 ?로 찍혀서 보기 불편하다

 

[적용후]

개행처리가 되고 쿼리 파라미터까지 모두 한번에 찍어준다.

1. dependency 추가

아래 내용을 참고하여 dependency를 추가하자.

 

 

<dependency>
   <groupId>org.lazyluke</groupId>
   <artifactId>log4jdbc-remix</artifactId>
   <version>0.2.7</version>
</dependency>

 

2.  dataSource 수정

dataSourceSpied를 새로 추가하여 아래와 같이 설정한다.

 

 
<bean id="dataSourceSpied" class="org.apache.commons.dbcp.ManagedBasicDataSource" destroy-method="close">
    <property name="driverClassName" value="${jdbc.driverClassName}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    >
</bean>

<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
    <constructor-arg ref="dataSourceSpied" />
    <property name="logFormatter">
        <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
            <property name="loggingType" value="MULTI_LINE" />
            <property name="sqlPrefix" value="[SQL] :     "/>
        </bean>
    </property>
</bean>

 

3. logback.xml 설정

아래 logabck 설정 예제를 통해 자세히 알아보시기 바랍니다.

 

<?xml version="1.0" encoding="UTF-8"?>

<configuration scan="true" scanPeriod="60 seconds">


    <!-- appender -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${pt_COMMON}</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>${consoleLoglevel}</level>
        </filter>
    </appender>

    <appender name="MYBATIS_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${logBaseDir}/mybatis.%d{yyyy-MM-dd}.log${compType}</fileNamePattern>
            <maxHistory>${maxLogHistory}</maxHistory>
        </rollingPolicy>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
        <encoder>
            <pattern>${pt_MYBATIS}</pattern>
        </encoder>
    </appender>
    
        <logger name="jdbc.sqlonly" level="DEBUG" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    <logger name="jdbc.sqltiming" level="OFF" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    <logger name="jdbc.audit" level="OFF" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    <logger name="jdbc.resultset" level="OFF" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    <logger name="jdbc.resultsettable" level="OFF" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    <logger name="jdbc.connection" level="OFF" additivity="false">
        <appender-ref ref="MYBATIS_LOG"/>
    </logger>
    
    </configuration>

 

댓글