Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
마이바티스(MyBatis)쿼리로그 출력및 정렬하기
1. gradle파일 수정
build.gradle파일에 아래 내용을 추가후 eclipse 프로젝트에서 오른쪽 마우스 클릭 Gradle->"Refresh Dependencies"에서 한다.
compile group: 'org.lazyluke', name: 'log4jdbc-remix', version:'0.2.7'
2. log4j파일 수정
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | <? xml version = "1.0" encoding = "UTF-8" ?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <!-- Appenders --> <!-- 콘솔 로그 --> < appender name = "stdout" class = "org.apache.log4j.ConsoleAppender" > <!-- 패턴 레이아웃 설정.. --> < layout class = "org.apache.log4j.PatternLayout" > < param name = "ConversionPattern" value = "[%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n" /> </ layout > </ appender > <!-- 날짜별 로그 --> < appender name = "dailyout" class = "org.apache.log4j.DailyRollingFileAppender" > <!-- 이것은 날짜별로 로그를 남김. 파일명.확장자.DatePattern으로 정의 함 --> < param name = "file" value = "/home/hadoop/daily-log.log" /> < param name = "Append" value = "true" /> < param name = "DatePattern" value = "'.'yyMMdd" /> < layout class = "org.apache.log4j.PatternLayout" > < param name = "ConversionPattern" value = "[%d{yyyy-MM-dd HH:mm:ss}] [%c{1}] [%L] [%p] %m %n" /> </ layout > </ appender > < logger name = "com.gooper.hadoop" additivity = "false" > < level value = "DEBUG" /> < appender-ref ref = "dailyout" /> < appender-ref ref = "stdout" /> </ logger > < logger name = "org.springframework" additivity = "false" > < level value = "INFO" /> < appender-ref ref = "dailyout" /> < appender-ref ref = "stdout" /> </ logger > < logger name = "jdbc.sqlonly" additivity = "false" > < level value = "DEBUG" /> < appender-ref ref = "dailyout" /> < appender-ref ref = "stdout" /> </ logger > < logger name = "jdbc.resultsettable" additivity = "false" > < level value = "DEBUG" /> < appender-ref ref = "dailyout" /> < appender-ref ref = "stdout" /> </ logger > <!-- root 로거 기본 설정 --> < root > < level value = "WARN" /> < appender-ref ref = "dailyout" /> < appender-ref ref = "stdout" /> </ root > </ log4j:configuration > |
3. jdbc 설정정보 변경
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <? xml version = "1.0" encoding = "UTF-8" ?> xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close" --> < bean id = "dataSourceSpied" class = "org.apache.commons.dbcp.BasicDataSource" destroy-method = "close" > < property name = "driverClassName" value = "org.mariadb.jdbc.Driver" /> < property name = "username" value = "username" /> < property name = "password" value = "username_password" /> < property name = "initialSize" value = "10" /> </ 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 = "sqlPrefix" value = "SQL : " /> </ bean > </ property > </ bean > < tx:annotation-driven transaction-manager = "transactionManager" /> < bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager" > < property name = "dataSource" ref = "dataSource" ></ property > </ bean > </ beans > |
4. 설명
- 기존에 DB연결을 dataSource를 이용했으나 log4j-remix를 쿼리의 중간을 가로채 정렬하고 쿼리를 출력하는 역할을 합니다.
- 기존에 사용한 DB연결은 dataSourceSpied로 변경하고, 새로 dataSource를 만들고 로그타입과 쿼리를 어떻게 출력하지 설정함
- log4j에서 jdbc.sqlonly로거를 이용하여 쿼리를 출력하도록 하고 dataSourceSpied(log4j-remix)가 쿼리를 정렬함
- log4j설정에 추가한 jdbc.resultsettable가 쿼리결과를 출력하도록 합니다.(이부분을 생략하면 쿼리결과 출력은 없어짐)
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
13 | AIX 7.1에 Python 2.7.11설치하기 | 2016.10.06 | 4798 |
12 | DBCP Datasource(org.apache.commons.dbcp.BasicDataSource) 설정 및 속성 설명 | 2016.09.26 | 3741 |
11 | [Mybatis]Spring과 연동하지 않고 Java+Mybatis 형태의 프로그램 샘플소스 | 2016.09.01 | 3214 |
10 | 초기 오류(java.lang.NoSuchMethodError)에 따른 후속 작업에서 오류(java.lang.NoClassDefFoundError)가 발생되는 상황(quartz에서 주기적으로 작업시) | 2016.08.29 | 2926 |
9 | servlet-api를 jar형태로 build할때 포함하지 말고 java 설치 위치의 jre/lib/ext에 복사하여 사용하는것이 좋다. | 2016.08.10 | 2843 |
8 | Windows에서 sbt개발환경 구축 방법(링크) | 2016.06.02 | 2093 |
7 | python 2.6.6에서 print 'A=' 형태의 사용이 python 3.5.1에서 오류(SyntaxError: Missing parentheses in call to 'print') 발생함.. | 2016.05.27 | 2933 |
6 | CentOS6에 python3.5.1 소스코드로 빌드하여 설치하기 | 2016.05.27 | 4513 |
5 | java quartz 시간 설정 참고사항 | 2015.12.16 | 3153 |
» | 마이바티스(MyBatis)쿼리로그 출력및 정렬하기 | 2015.12.01 | 4350 |
3 | mybais #과 $의 차이점 | 2015.11.10 | 3734 |
2 | Mybatis foreach 문법정리(상황에 따른 사용법) | 2015.11.10 | 5708 |
1 | jsoup 사용 예제 | 2014.06.06 | 4342 |