'log4sql'에 해당되는 글 1건

  1. 2009/06/08 CUBRID에서 log4sql 사용하기 (1)
큐브리드2009/06/08 00:39
프레임워크니 ORM이니... 날로 복잡해져가는 우리 웹 개발환경에서 SQL을 확인하려고 System.out으로 디버깅 하던
시대는 이미 지나갔습니다. 성능도 성능이거니와 이제는 인라인 코드를 입력할 곳도 없어져버렸습니다.

물론, 다행히도 프레임워크에서 지원하면 출력 가능하기는 하지만, PreparedStatement는 또 ...
log4sql은 이런 가려운 부분을 시원하게 긁어 줍니다.

JDBC 드라이버의 이름을 log4sql에서 제공하는 이름으로 샤샤삭 바꾸기만 하면 됩니다.
근데, 어디에도 CUBRID 지원 드라이버는 없더군요. -.-;

없으면 만들면 되지...라는 생각에 소스를 받아서 보았습니다.
근데, ... 드라이버 만드는 게 일도 아니더군요.
그래서 드라이버만 만들어서 공유할 게 아니라 방법까지 공개하려고 합니다. ^^;


우선 홈페이지에서 log4sql을 다운로드 받습니다.
http://log4sql.sourceforge.net/index_kr.html

눈이 어두워서 링크 한참 찾았습니다. log4sql에 대하여 메뉴의 페이지 중앙쯔음에 있습니다.



다운로드 받아서 압축을 풀어보면 log4sql.jar파일과 log4sql-src.jar파일이
곱게 들어 있습니다.
jar xvf log4sql-src.jar
하시면, core로 시작하는 소스를 보실 수 있습니다.

우리가 작업해야할 파일은 신규추가 1개, 변경 1개 입니다.

core/log/jdbc/DriverLoggables.java 를 열어보시면...
수많은 드라이버가 정의되어 있으실 겁니다.
여기 마지막에 살짝~ 큐브리드 드라이버를 등록해 둡니다.

public final String CUBRID_DRIVER="cubrid.jdbc.driver.CUBRIDDriver";

그러면, 이 드라이버를 래퍼할 클래스를 만들 차례 입니다.

core/log/jdbc/driver 요기에다가 CUBRIDDriver.java를 하나 만듭니다.

package core.log.jdbc.driver;

import java.sql.DriverManager;
import java.sql.SQLException;

import core.log.jdbc.DriverLoggables;
import core.log.logger.SL;

public class CUBRIDDriver extends
        DriverLoggables {
   
    public CUBRIDDriver() {
        setDriver(CUBRID_DRIVER);
    }

    static {
        try {
            DriverManager.registerDriver(new CUBRIDDriver());
        } catch(SQLException e) {
            SL.getInstance().logError(e);
        }
    }
   
}

보시면 아시겠지만, 이 친구를 우리의 webapp에서 땡겨쓸 겁니다.

JDBC이든, Spring이든, iBatis이든 간에...

cubrid.jdbc.driver.CUBRIDDriver

대신에

core.log.jdbc.driver.CUBRIDDriver

요렇게만 바꾸면 된다는 거죠.
이제 테스트 해보시면^^ SQL을 쉽게 뽑아보실 수 있습니다.
PreparedStatement를 사용해도 입력되는 파라미터가 SQL에 팍팍 박혀서 나오니 Copy & Paste 해서
CUBRID Manager에서 실행해보시면 어디서 에러가 있는지 쉽게 알 수 있을 겁니다.

참, log4sql.jar 압축을 풀어보시면 properties파일이 하나 있습니다.
이를 동일한 위치로 복사해야 합니다. 안그러면 실행이 안되실 겁니다.

만약, iBatis에서 테스트할 경우에는 sqlmap 설정에 poolPreparedStatements를 false로 해야 에러 없이
실행됩니다.

<property name="poolPreparedStatements" value="false" />


CUBRIDDriver.java와 DriverLoggables.java 파일은 첨부합니다.

저작자 표시 비영리 변경 금지
Posted by 종이비행기