'52.Apache Project &.../log4sql'에 해당되는 글 2건

  1. 2009.04.07 Log4sql 설치와 쿼리의 실제 내용을 log로 볼수 있는 방법
  2. 2009.04.07 System.out.println()은 잊어라 log4sql이 온다.
반응형

Log4sql 설치와 쿼리의 실제 내용을 log로 볼수 있는 방법
ORM 이나 Spring JDBC 등을 통해서 쿼리를 날리게 되면 로그로 쿼리의 조합된 모양을 보기가
상당히 힘들다. 그리고 log4sql 를 중간에 설치해 쿼리의 내용을 로그로 찍어줄수가 있다.

사이트 : http://log4sql.sourceforge.net
한국 국기를 클릭하면 한글 사이트로 번역이 된다.
 


다운받은 파일을 열게 되면 log4sql.jar, log4sql_conf.jsp있다.
log4sql.jar 라이브러리 폴더에 넣으면 되고 , jsp 페이지는 설정값을 변경할수 있는 방법을 제공한다.

다음은 프로젝트 파일에서 설정값을 변경한다.
Jdbc driverClassName 설정값을 변경해야되는데 그 값은 value 값을
core.log.jdbc.driver.OracleDriver 설정하면된다. Log4jsql.jar열어보면 여러종류의 드라이버가
있으니 그에 맞는 클래스를 선택하면된다.



Jdbc connect 정보를 설정한 곳에 보통 xml 파일에 설정이 되어있는데
<
property name="driverClassName" value="core.log.jdbc.driver.MssqlDriver"/>
<property name="url" value="jdbc:microsoft:sqlserver://xxx.xxx.xxx.xxx:1433;DatabaseName=spring"/>
<property name="username" value="xxxxx"/>
<property name="password" value="xxxxx"/>

아래그림과 같이 elapsed time 처럼 쿼리가 걸리는 시간도 찍히게 된다

Posted by 1010
반응형
log4sql은 많이 알려지진 않았지만 상당히 유용한 sql 로거입니다. 만든 분은 송인섭이라는분인데 한국분이신것 같습니다.

 기존에 우리는 sql을 디버깅 하기 위해서 대부분 System.out.println()을 사용했습니다. log4j를 이용해서 sql을 콘솔에 찍기도 하고 jdbc관련 클래스를 만들어서 사용하는 경우에도 결국엔 System.out.println()을 사용하게 됩니다. 하지만 sql을 이렇게 콘솔로 표현하게 되면 여러가지 불편한 점들이 생깁니다.
 가장 큰 문제점이 바로 소스는 소스대로, 콘솔은 콘솔대로 가독성이 떨어지게 됩니다. 소스상에서 System.out을 사용하게되면 개발이 끝나도 운영에 들어가게되면 이 부분을 주석처리하거나 다른 설정을 하게됩니다.
 또한 콘솔에서 보여질때 sql을 소스상에서 들여쓰기를 해주지 않았다면 단순한 sql은 괜찮지만 복잡한 sql은 볼때마다 매번 들여쓰기를 해주어야 한다는 단점이 있습니다. log4sql은 이러한 문제를 해결하기 위해서 간단히 드라이버 설정만 바꿔주면 System.out.println()을 사용하지 않아도, 소스상에서 들여쓰기를 해주지 않아도 콘솔에 예쁘게 들여쓰기가 된 sql을 보여줍니다.

log4sql이 뭔가요?

간단하게 log4sql이 무엇인지 백번 설명을 하기보다는 한번 보는게 확실히 이해하기 쉬울꺼 같습니다.
사용자 삽입 이미지
저 노란색 박스안에 나타난 내용이 log4sql에서 자동으로 찍어준 내용입니다. sql이 실행된 시간과 실행된 메소드, sql이 실행되는데 소요된 시간, 실행된 sql을 자동으로 들여쓰기를 해서 보여주고 있습니다.

log4sql의 장점

1. 자동 들여쓰기
일반적으로 콘솔에 들여쓰기가 된 sql을 보려면 다음과 같은 코드를 작성해야 했습니다.
  1. StringBuffer  var11 = new StringBuffer();  
  2. var11.append("SELECT * \n");  
  3. var11.append(" FROM   emp \n");  
  4. var11.append(" WHERE  deptno = '30' \n");  

하지만 더이상 이런 부분은 신경 쓰지않아도 됩니다. log4sql을 사용한다면 말이죠.

2. 페이지 반응속도가 느리다구요?
log4sql은 쿼리가 실행되는데 걸린 시간을 표시해줍니다. 어느 부분이 느린지 어느 쿼리가 느린지 콘솔을 보기만 하면 알 수 있습니다.

3. 이 쿼리가 어디서 날린 쿼리지?
log4sql은 쿼리가 실행된 메소드도 표시해 줍니다. 하지만 쿼리를 날리는 클래스를 별도로 두고 해당 클래스를 이용해서 쿼리를 날리게 되면 log4sql도 어쩔수 없답니다.^^;;

어떻게 사용하나요?

간단합니다. JDBC 관련 설정에서 드라이버 설정만 바꿔주면 됩니다. 예를 들어 오라클을 사용하는 경우 기존에 'oracle.jdbc.drirver.OracleDriver' 드라이버를 사용했다면 'core.log.jdbc.driver.OracleDriver'로 바꿔주기만 하면 됩니다. 이제 log4sql을 사용할 준비가 된겁니다. 이제 WAS를 올리고 콘솔을 한번 보세요. sql이 깔끔하게 정리되어서 나타날꺼에요.^^
다른 디비를 사용하시는 경우에는 log4sql 홈페이지에서 확인하시면 됩니다.

다음에는 log4sql의 상세 설정에 대해서도 알아보도록 하겠습니다.



출처 : http://westzero.net/16
Posted by 1010