MisoBoy Blog...

ibatis 로그 파라미터 바인딩 및 개행처리 본문

mybatis & ibatis

ibatis 로그 파라미터 바인딩 및 개행처리

misoboy 2014. 10. 29. 14:40

I. 소스받기 

  • http://www.ibatis.com


II. 소스 수정 리스트

  • com.ibatis.common.jdbc.logging.ConnectionLogProxy.java
  • com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.java
  • com.ibatis.common.jdbc.logging.StatementLogProxy.java
  • com.ibatis.sqlmap.engine.mapping.sql.SqlText.java
  • com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql.java


1. com.ibatis.common.jdbc.logging.ConnectionLogProxy.java

//log.debug("{conn-" + id + "} Preparing Statement: " + removeBreakingWhitespace((String) params[0]));
log.debug("{conn-" + id + "} Preparing Statement: " + ((String) params[0]));
...
//log.debug("{conn-" + id + "} Preparing Call: " + removeBreakingWhitespace((String) params[0]));
log.debug("{conn-" + id + "} Preparing Call: " + ((String) params[0]));

 

주석처리 후 removeBreakingWhitespace 함수를 제거합니다
removeBreakingWhitespace 함수가 '\n'를 ' '로 replace 시킵니다

2. com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.java

//log.debug("{pstm-" + id + "} Executing Statement: " + removeBreakingWhitespace(sql));
log.debug("{pstm-" + id + "} Executing Statement: " + (sql));

 

마찬가지로 removeBreakingWhitespace 함수를 제거합니다

3. com.ibatis.common.jdbc.logging.StatementLogProxy.java

//log.debug("{stmt-" + id + "} Statement: " + removeBreakingWhitespace((String) params[0]));
log.debug("{stmt-" + id + "} Statement: " + ((String) params[0]));

 

역시나 removeBreakingWhitespace 함수를 제거합니다

4. com.ibatis.sqlmap.engine.mapping.sql.SqlText.java

public void setText(String text) {
    //this.text = text.replace('\r', ' ').replace('\n', ' ');
    this.text = text;
    this.isWhiteSpace = text.trim().length() == 0;
}

 

replace 하는 부분을 주석처리해 놓고 this.text = text; 를 추가합니다

5. com.ibatis.sqlmap.engine.mapping.sql.stat.StaticSql.java

public StaticSql(String sqlStatement) {
    //this.sqlStatement = sqlStatement.replace('\r', ' ').replace('\n', ' ');
    this.sqlStatement = sqlStatement;
}

 

마찬가지로 replace 하는 부분을 주석처리 하고 this.sqlStatement = sqlStatement; 를 추가시킵니다

III. 수동으로 컴파일 후 jar 압축하기
1. 다운받은 ibatis-2.3.0.677 를 압축을 풉니다
2. C:\ibatis-2.3.0.677\src\ibatis-src.zip의 압축을 풉니다
3. C:\ibatis-2.3.0.677\src\ 이하 위의 리스트에 있는 소스를 수정합니다
4. C:\ibatis-2.3.0.677\src\의 수정된 5개의 자바 소스를 C:\ibatis-2.3.0.677\lib\로 카피 합니다
5. C:\ibatis-2.3.0.677\lib\ibatis-2.3.0.677.jar 압축을 풉니다
6. C:\ibatis-2.3.0.677\lib\의 현재 상태입니다


7. cmd 창을 열어 C:\ibatis-2.3.0.677\ 이동 후 컴파일 합니다
javac -classpath "." -d ./ *.java

8. jar 압축 합니다
jar cvf ibatis-2.3.0.677.jar ./

ibatis.jar를 생성후 적용해 보면 한줄로 쭉 나오던 SQL이 아래와 같이 깔끕하게 나옵니다

2007-10-26 10:34:17,328 DEBUG [http-80-Processor24] sql.Connection    (JakartaCommonsLoggingImpl.java:27)     - {conn-100009} Preparing Statement:
                SELECT
                         COMMON_GB
                        ,COMMON_GB_NM
                        ,USE_YN
                        ,REGISTER_USER
                        ,LAST_UPDATE_USER
                        ,REGISTER_DT
                        ,LAST_UPDATE_DT
                FROM CMR_COMMONCD_MAST
                ORDER BY COMMON_GB


재생성한 jar파일 첨부합니다

com.ibatis.common.jdbc.logging.*  패키지에 JDBC관련 로깅 java들이 있습니다
ResultSet 로깅등 여러가지 부분들을 수정 할 수 있습니다


출처 : http://www.jakartaproject.com/article/jsptip/119336284359281


PS. 위 내용은 로그 개행 처리만 하는 부분 입니다.

적용 하실 때 참고만 하시길 바랍니다.

로그 개행 및 바인딩 결과물 첨부파일은 다음과 같습니다.

ibatis-sqlmap-2.3.4.726.jar

소스(com).zip