log4j sql 로그찍기




log4j로 sql 로그 찍는법이다.

우선 datasource의 레퍼런스 클래스부터 설정해야된다.
<bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">
   <constructor-arg ref="dataSourceOrg" />
   <property name="logFormatter">
      <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">
          <property name="loggingType" value="MULTI_LINE" />
          <property name="sqlPrefix"   value="SQL ----" />
      </bean>
    </property>
 </bean>

참조될 클래스는 이거다.
net.sf.log4jdbc.tools.Log4JdbcCustomFormatter

사실 이는 logFormatter를 쓰기위함이다.
그안의 내용은 대충 저렇다.
sqlPrefix는 해당 로그가 찍힐때 시작되는 접두어다.

log4j 설정부분은 일반 로그appender 설정과 동일하다
(http://changpd.blogspot.kr/2013/05/spring-lo4j.html) 참조
 <!-- appender :: sql -->
<appender name="sql-appender" class="org.apache.log4j.DailyRollingFileAppender">
   <param name="append" value="false"/>
   <param name="DatePattern" value="'.'yyyy-MM-dd"/>
   <param name="file" value="/home/k2/logs/sql.log"/>
   <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %-5p: %c - %m%n" />
   </layout>
</appender>

그리고,
사용하고 싶은 logger의 name을 설정해서 쓰면된다.
본인의 경우는 jdbc.resultsettable 과, jdbc.sqlonly 만 사용한다.
jdbc.sqlonly는 mybatis내에 바인딩된 변수값까지 쿼리로 제공해주고
jdbc.resultsettable 은 쿼리결과를 테이블 형태로 보기좋게 표시해준다.
 <!-- SQL logger -->
    <logger name="jdbc.resultsettable" additivity="false">
        <level value="info" />
        <appender-ref ref="console" />
         <appender-ref ref="sql-appender"/>
    </logger>
    
    <logger name="jdbc.audit" additivity="false">
        <level value="off" />
        <appender-ref ref="console" />
        <appender-ref ref="sql-appender"/>
    </logger>
      
    <logger name="jdbc.resultset" additivity="false">
        <level value="off" />
        <appender-ref ref="console" />
        <appender-ref ref="sql-appender"/>
    </logger>
     
    <logger name="jdbc.sqlonly" additivity="false">
        <level value="info" />
        <appender-ref ref="console" />
        <appender-ref ref="sql-appender"/>
    </logger>
 
    <logger name="jdbc.sqltiming" additivity="false">
        <level value="off" />
        <appender-ref ref="console" /> 
        <appender-ref ref="sql-appender"/>
    </logger>

    <logger name="jdbc.connection" additivity="false">
        <level value="off" />
        <appender-ref ref="console" />
        <appender-ref ref="sql-appender"/>
    </logger>




댓글

이 블로그의 인기 게시물

[spring] log4j 설정 및 사용법

[linux] 백그라운드 작업 nohup [xxx.sh] &

[spring] 인터셉터 와 필터