Bigdata, 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파일 수정
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <!-- 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 설정정보 변경
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.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="url" value="jdbc:mariadb://localhost:3306/db명"/> <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 | embedded-cassandra의 data 저장위치 | 총관리자 | 2019.06.09 | 336 |
12 | lombok설치방법 | 총관리자 | 2020.06.20 | 49 |
11 | python2.7.4에서 Oracle DB(11.2)를 사용하기 위한 설정(RPM을 이용하여 RHEL 7.4에 설치) | 총관리자 | 2021.11.26 | 335 |
10 | windows10 pro에서 microservice pattern책의 예제를 kubernetes에서 기동하는 방법 | 총관리자 | 2022.01.30 | 18 |
9 | eclipse editor 설정방법 | 총관리자 | 2022.02.01 | 10 |
8 | vuestorefrontui.io를 이용한 front end project 생성하기 | 총관리자 | 2022.02.06 | 23 |
7 | [vue storefrontui]외부 API통합하기 참고 문서 | 총관리자 | 2022.02.09 | 7 |
6 | restaurant-controller,에서 등록 예시 | 총관리자 | 2022.04.30 | 33 |
5 | 주문 생성 데이터 예시 | 총관리자 | 2022.04.30 | 11 |
4 | 주문히스토리 조회 | 총관리자 | 2022.04.30 | 11 |
3 | [ftgo_application]Unable to infer base url오류 발생시 조치방법 | gooper | 2023.02.20 | 1334 |
2 | ./gradlew :composeDown 및 ./gradlew :composeUp 를 성공했을때의 메세지 | gooper | 2023.02.20 | 6 |
1 | 호출 url현황 | gooper | 2023.02.21 | 6 |