ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL Statement Log 를 보기위한 log4jdbc 사용법
    Database 2016. 3. 24. 16:13

    log4jdbc3-1.1.jar
    slf4j-api-1.5.3.jar
    slf4j-log4j12-1.5.3.jar

    SQL Statement Log 를 보기위한 log4jdbc 사용법

    프로그램을 개발하기위해선 대부분 DB 가 필요하다. DB에 데이터를 가져와서 요리하기
    위해선 연결하고 조작하는 framework 을 쓰게 되는데 spring jdbc 와 hibernate, iBatis 같이
    섞어서 사용한다. hibernate, iBatis 은 ORM(Object-relational mapping) 프레임웍이라고 부른다.
    이것은 객체와 DB 의 맵핑을 좀더 효율적으로 할수 있게 만든 프레임웍이다.

    이 프레임웍을 사용할 때 동적으로 쿼리의 상태값을 보는게 쉽지 않다. 그래서 무식하게 로그를
    다 찍어보곤하는데 그런 수고를 덜수있는 log4jdbc 가 있다.
    이것 외에 http://mainia.tistory.com/entry/log4sql log4sql 이라는 플러그인도 있다.
    이전에 소개했던 기사인데 두가지를 비교해서 장단점을 알아보지는 않았다.
    여하튼 이 플러그인을 쓰기 위한 3가지 필수 라이브러리가 있다.

    (1) code.google.com/p/log4jdbc
    log4jdbc3-1.1.jar (jdk1.4 or 1.5)

    (2) www.slf4j.org
    slf4j-api-1.5.3.jar (log4jdbc 와 logging 서비스와 연동하게하는 API)
    slf4j-log4j12-15.3 (log4jdbc 와 log4j 기반 Logging 연동 라이브러리)

    다운받은 zip 파일 안에 위의 2가지 jar를 찾아 복사한다.
    먼저 소스에 적용하기 위해서 DB 연결 정보를 수정해야한다.
    driver 클래스와 url 을 변경해야되는데 아래와 같이 변경하면된다.

    <property name="driverClassName" value="net.sf.log4jdbc.DriverSpy"/>
    <property name="url"  
                value="jdbc:log4jdbc:oracle:thin:@127.0.0.1:1521:ORCL"/>
    <property name="username" value="xxxx"/>
    <property name="password" value="xxxxx"/>

    프로그램을 시작하고 DB 연결을 시도하면 쿼리와 파라미터 정보가 보이게 된다.
    그리고 하이버넷 내부에 어떤일이 벌어지는지 상세하지는 않지만 힌트를 주는 로그를 보여준다
    각 DB 에 따른 사용클래스들에 대한 표를 참조한다.

    관련 사이트 : http://code.google.com/p/log4jdbc/
    log4jdbc3 의 경우 JDK1.4 and JDK1.5
    log4jdbc4 의 경우 JDK1.6 and JDK1.7 용입니다.

    # 적용방법
    JDBC Dirver 와, URL, Logback(log4j) 프로퍼티 변경

    (적용전)
    spp.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    spp.jdbc.url=jdbc:oracle:thin:@localhost:1521:ora

    (적용후)
    spp.jdbc.driverClassName=net.sf.log4jdbc.DriverSpy
    spp.jdbc.url=jdbc:log4jdbc:oracle:thin:@localhost:1521:ora


      <!-- 관련 정보 http://magefister.egloos.com/2053938 -->
      <logger name="java.sql">
        <level value="ERROR"/>
      </logger>
      <!-- SQL문만을 로그로 남기며, PreparedStatement일 경우 관련된 argument 값으로 대체된 SQL문이 보여진다. -->
      <logger name="jdbc.sqlonly">
          <level value="debug"/>
      </logger>
      <!-- SQL문과 해당 SQL을 실행시키는데 수행된 시간 정보(milliseconds)를 포함한다. -->
      <logger name="jdbc.sqltiming">
          <level value="debug"/>
      </logger>
      <!-- ResultSet을 제외한 모든 JDBC 호출 정보를 로그로 남긴다. 많은 양의 로그가 생성되므로
      특별히 JDBC 문제를 추적해야 할 필요가 있는 경우를 제외하고는 사용을 권장하지 않는다. -->
      <logger name="jdbc.audit">
          <level value="error"/>
      </logger>
      <!-- ResultSet을 포함한 모든 JDBC 호출 정보를 로그로 남기므로 매우 방대한 양의 로그가 생성된다. -->
      <logger name="jdbc.resultset">
          <level value="error"/>
      </logger>

    Driver Class                                       Database Type
    oracle.jdbc.driver.OracleDriver                     Oracle
    com.sybase.jdbc2.jdbc.SybDriver                  Sybase
    net.sourceforge.jtds.jdbc.Driver                    jTDS SQL Server & Sybase driver
    com.microsoft.jdbc.sqlserver.SQLServerDriver     Microsoft SQL Server 2000 driver
    com.microsoft.sqlserver.jdbc.SQLServerDriver     Microsoft SQL Server 2005 driver
    weblogic.jdbc.sqlserver.SQLServerDriver         Weblogic SQL Server driver
    com.informix.jdbc.IfxDriver                         Informix
    org.apache.derby.jdbc.ClientDriver                Apache Derby client/server driver, aka the Java DB
    org.apache.derby.jdbc.EmbeddedDriver            Apache Derby embedded driver, aka the Java DB
    com.mysql.jdbc.Driver                        MySQL
    org.postgresql.Driver                         PostgresSQL
    org.hsqldb.jdbcDriver                         HSQLDB pure Java database
    org.h2.Driver                                 H2 pure Java database

    'Database' 카테고리의 다른 글

    LIKE절  (0) 2016.07.05
    SQLite AUTO_INCREMENT  (0) 2016.03.22
    MySQL 계정생성 및 권한주기  (0) 2015.12.23

    댓글

Designed by Tistory.