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인 경우 설치 방법
- <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/ 이렇게 lib파일을 등록 했으면 이제 log4j.xml 설정을 합니다.
- <!--?xml version="1.0" encoding="UTF-8" ?-->
- <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
- <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <layout class="org.apache.log4j.PatternLayout">
- <param name="ConversionPattern" value="%p - %C{1}.%M(%L) | %m%n">
- </layout>
- <filter class="org.apache.log4j.varia.StringMatchFilter">
- <param name="StringToMatch" value="Result">
- <param name="AcceptOnMatch" value="false">
- </filter>
- </appender>
- <logger name="jdbc.resultsettable" additivity="false">
- <level value="info">
- <appender-ref ref="CONSOLE">
- </appender-ref></level></logger>
- <logger name="jdbc.audit">
- <level value="warn">
- <appender-ref ref="CONSOLE">
- </appender-ref></level></logger>
- <logger name="jdbc.resultset" additivity="false">
- <level value="warn">
- <appender-ref ref="CONSOLE">
- </appender-ref></level></logger>
- <logger name="jdbc.sqltiming" additivity="false">
- <level value="warn">
- <appender-ref ref="CONSOLE">
- </appender-ref></level></logger>
- <root>
- <priority value="info">
- <appender-ref ref="CONSOLE">
- </appender-ref></priority></root>
- </log4j:configuration>
좀 다른 부분이 logger name이 기존하고는 좀 다른것을 확인하실 수 있을겁니다. 다음으로는 applicationContext.xml에서 dataSource를 변경합니다.
- <bean id="dataSource" class="...">
- <property name="driverClass" value="${datasource.driverClassName}">
- <property name="jdbcUrl" value="${datasource.url}">
- <property name="user" value="${datasource.username}">
- <property name="password" value="${datasource.password}">
- ...
- </property></property></property></property></bean>
- [/code]
- 기존에 이런식으로 설정이 되어있을 것이며 이부분을 밑에 처럼 변경합니다.
- [code language="xml"]
- <!-- DataBase -->
- <bean id="dataSourceSpied" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
- <property name="driverClassName" value="com.mysql.jdbc.Driver">
- <property name="url" value="jdbc:mysql://localhost:3306/hnsnmn_db">
- <property name="username" value="hnsnmn">
- <property name="password" value="0000">
- </property></property></property></property></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="margin" value="19">
- <property name="sqlPrefix" value="SQL:::">
- </property></property></property></bean>
- </property>
- </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 로 변경해주는 방법이다
'Spring Framework' 카테고리의 다른 글
SecurityContextHolder 와 SecurityContext에 대한 개념 (0) | 2014.08.06 |
---|---|
jstl fn 문자열 함수 (0) | 2014.07.28 |
스마트 에디터 (0) | 2014.07.22 |
페이징 (0) | 2014.07.16 |
[Mybatis] XML 파일에 부등호 포함 쿼리 넣을 때 주의점. (0) | 2014.07.07 |