https://code.google.com/p/log4jdbc-remix/   -> 현재 remix 프로젝트는 종료가 되었다.

https://code.google.com/p/log4jdbc-log4j2/   -> remix 프로젝트에서 사용을 추천하는 것



log4jdbc-remix 설정 방법

http://hnsnmn.blogspot.kr/2014/02/spring-sql.html



SQL Log 직관적으로 볼수 있는 방법이 존재하지 않을까 해서 구글링 해보니 역시나..ㅋㅋog4jdbc-remix 입니다. 설치전에 집고 넘어가야 하는 부분이 있는데, maven repository와 jdk 1.6에서만 지원 가능합니다. 이점 유의하시고 진행해야 될거 같네요. 설치법은 우선 간단합니다.

1. maven인 경우 설치 방법

  1. <dependency>  
  2.   <groupid>org.lazyluke</groupid>  
  3.   <artifactid>log4jdbc-remix</artifactid>  
  4.   <version>0.2.4</version>  
  5. </dependency>  
  6. <dependency>  
  7.   <groupid>org.slf4j</groupid>  
  8.   <artifactid>slf4j-log4j12</artifactid>  
  9.   <version>1.6.1</version>  
  10. </dependency>  

2. classpath로 설정 하는 경우 설치 방법

log4j, slf4j, log4jdbc, log4jdbc-remix를 다운 받아서 클래스 패스 설정을 하시면 됩니다. log4jdbc, slf4j, log4jdbc : http://code.google.com/p/log4jdbc/ log4jdbc-remix : http://code.google.com/p/log4jdbc-remix/ 이렇게 lib파일을 등록 했으면 이제 log4j.xml 설정을 합니다.

  1. <!--?xml version="1.0" encoding="UTF-8" ?-->  
  2.   
  3. <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">  
  4.  <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  
  5.   <layout class="org.apache.log4j.PatternLayout">  
  6.    <param name="ConversionPattern" value="%p - %C{1}.%M(%L) | %m%n">  
  7.   </layout>  
  8.   <filter class="org.apache.log4j.varia.StringMatchFilter">  
  9.    <param name="StringToMatch" value="Result">  
  10.    <param name="AcceptOnMatch" value="false">  
  11.   </filter>  
  12.  </appender>  
  13.   
  14.  <logger name="jdbc.resultsettable" additivity="false">  
  15.   <level value="info">  
  16.   <appender-ref ref="CONSOLE">  
  17.  </appender-ref></level></logger>  
  18.  <logger name="jdbc.audit">  
  19.   <level value="warn">  
  20.   <appender-ref ref="CONSOLE">  
  21.  </appender-ref></level></logger>  
  22.   
  23.   
  24.  <logger name="jdbc.resultset" additivity="false">  
  25.   <level value="warn">  
  26.   <appender-ref ref="CONSOLE">  
  27.  </appender-ref></level></logger>  
  28.   
  29.  <logger name="jdbc.sqltiming" additivity="false">  
  30.   <level value="warn">  
  31.   <appender-ref ref="CONSOLE">  
  32.  </appender-ref></level></logger>  
  33.   
  34.  <root>  
  35.   <priority value="info">  
  36.   <appender-ref ref="CONSOLE">  
  37.  </appender-ref></priority></root>  
  38. </log4j:configuration>  

좀 다른 부분이 logger name이 기존하고는 좀 다른것을 확인하실 수 있을겁니다. 다음으로는 applicationContext.xml에서 dataSource를 변경합니다.

  1. <bean id="dataSource" class="...">  
  2.     <property name="driverClass" value="${datasource.driverClassName}">  
  3.     <property name="jdbcUrl" value="${datasource.url}">  
  4.     <property name="user" value="${datasource.username}">  
  5.     <property name="password" value="${datasource.password}">  
  6.     ...  
  7. </property></property></property></property></bean>  
  8. [/code]  
  9.   
  10. 기존에 이런식으로 설정이 되어있을 것이며 이부분을 밑에 처럼 변경합니다.  
  11.   
  12. [code language="xml"]  
  13. <!-- DataBase -->  
  14. <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">  
  15.  <property name="driverClassName" value="com.mysql.jdbc.Driver">  
  16.  <property name="url" value="jdbc:mysql://localhost:3306/hnsnmn_db">  
  17.  <property name="username" value="hnsnmn">  
  18.  <property name="password" value="0000">  
  19. </property></property></property></property></bean>  
  20. <bean id="dataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">  
  21.  <constructor-arg ref="dataSourceSpied">  
  22.  <property name="logFormatter">  
  23.   <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">  
  24.    <property name="loggingType" value="MULTI_LINE">  
  25.    <property name="margin" value="19">  
  26.    <property name="sqlPrefix" value="SQL:::">  
  27.   </property></property></property></bean>  
  28.  </property>  
  29. </constructor-arg></bean>  



http://beyondj2ee.tumblr.com/post/14507640070/spring-powerful-sql


(1) Maven인 경우

<dependency>

  <groupId>org.lazyluke</groupId>

  <artifactId>log4jdbc-remix</artifactId>

  <version>0.2.4</version>

</dependency>

<dependency>

  <groupId>org.slf4j</groupId>

  <artifactId>slf4j-log4j12</artifactId>

  <version>1.6.1</version>

</dependency>


(2) classpath로 설정 하는 경우


log4j, slf4j, log4jdbc, log4jdbc-remix를 다운 받아서 클래스 패스 설정을 하시면 됩니다.


log4jdbc, slf4j, log4jdbc : http://code.google.com/p/log4jdbc/

log4jdbc-remix : http://code.google.com/p/log4jdbc-remix/


log4j.xml 설정 하기


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

<!DOCTYPE log4j:configuration PUBLIC “-//LOGGER” “log4j.dtd”>


<log4j:configuration xmlns:log4j=”http://jakarta.apache.org/log4j/”>


    <appender name=”console” class=”org.apache.log4j.ConsoleAppender”>

        <param name=”Target” value=”System.out” />

        <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” additivity=”false”>

        <level value=”info” />

        <appender-ref ref=”console” />

    </logger>


    <logger name=”jdbc.audit” additivity=”false”>

        <level value=”warn” />

        <appender-ref ref=”console” />

    </logger>


    <logger name=”jdbc.resultset” additivity=”false”>

        <level value=”warn” />

        <appender-ref ref=”console” />

    </logger>

    

    <logger name=”jdbc.sqltiming” additivity=”false”>

        <level value=”warn” />

        <appender-ref ref=”console” />

    </logger>

        

    <!— Root Log Level —>

    <root>

        <priority value=”info” />

        <appender-ref ref=”console” />

    </root>

</log4j:configuration>

Spring Datasource 설정 하기

<!— datasource —>

    <jdbc:embedded-database id=”hsqlDataSource”

        type=”HSQL”>

        <jdbc:script location=”classpath:schema.sql” />

    </jdbc:embedded-database>


    <!— sql spy —>

    <bean id=”dataSource” class=”net.sf.log4jdbc.Log4jdbcProxyDataSource”>

        <constructor-arg ref=”hsqlDataSource” />

        <property name=”logFormatter”>

            <bean class=”net.sf.log4jdbc.tools.Log4JdbcCustomFormatter”>

                <property name=”loggingType” value=”MULTI_LINE” />

                <property name=”margin” value=”19” />

                <property name=”sqlPrefix” value=”SQL:::” />

            </bean>

        </property>

    </bean>



http://goodwilldd.blogspot.kr/2012/06/mybatis-query.html



myBatis query 로그 출력하기

myBatis 의 query를 콘솔에 찍는 많은 방법이 있지만


사용해본 것 중에 가장 간단하고 편한 방법을 소개하고자 한다.


log4jdbc-remix(log4jdbc 를 참고) 라는 것이다.


설정하는 방법은 다음과 같다.




<!-- log4jdbc -->

<dependency>

 <groupId>org.lazyluke</groupId>

 <artifactId>log4jdbc-remix</artifactId>

 <version>0.2.7</version>

</dependency>




위 내용을 pom.xml 에 추가한다.


다음에는 2가지 방법이 있는데, 편한 방법으로 적용하면 된다.


우선 공통 적용 사항은 log4j.xml에



<logger name="jdbc.resultsettable" additivity="false">

 <level value="info" />

 <appender-ref ref="console" />

</logger>


resulttable을 보여주는 부분


<logger name="jdbc.sqlonly" additivity="false">

 <level value="info" />

 <appender-ref ref="console" />

</logger>


쿼리를 출력하는 부분(debug로 설정하면 자세히 나온다)을 추가한다.



해당 부분에 대한 자세한 내용은 log4jdbc set up your logger 를 참고한다.



첫 번째, 방법은 jdbc.properties를 다음과 같이 변경한다.



jdbc.driverClass=net.sf.log4jdbc.DriverSpyjdbc.url=jdbc:log4jdbc:mysql://000.000.000.000:3306/xxxx

jdbc.username=xxxx

jdbc.password=xxxx



두 번째, 방법은



<bean id="logDataSource" class="net.sf.log4jdbc.Log4jdbcProxyDataSource">

 <constructor-arg ref="기존DATASOURCE ID" />

 <property name="logFormatter">

  <bean class="net.sf.log4jdbc.tools.Log4JdbcCustomFormatter">

   <property name="loggingType" value="MULTI_LINE" />

   <property name="sqlPrefix" value="SQL:::" />

  </bean>

 </property>

</bean>


변경 후, myBatis 설정에서 기존에 datasource id를 logDataSource 로 변경해주는 방법이다

Posted by 스트라
,