반응형
목차
mybatis log4j 쿼리 로그 정렬 및 기타 😄
mybatis와 log4j를 처음 사용할 때는 아래처럼 쿼리가 일렬로 나오고 parameter값이 "?"로 표시된다.
짧은 쿼리면 상관 없지만 긴 쿼리의 경우에는 Parameters로 나온 값을 ?에 복붙을 해서 쿼리를 실행해 봐야 된다.
시간도 시간이고 가독성도 안좋아서 개발시에는 여간 불편한게 아니다.
그래서 log4jdbc를 이용해서 쿼리를 보기 좋게 정렬/정리하는 방법을 기록한다.
log4jdbc 의존성 추가 🤗
maven 기준 pom.xml에 의존성 추가
<dependency>
<groupId>org.bgee.log4jdbc-log4j2</groupId>
<artifactId>log4jdbc-log4j2-jdbc4.1</artifactId>
<version>1.16</version> <!-- version은 나중에 다른 걸로 하게 될 수도 있음 -->
</dependency>
gradle 기준 build.gradle에 의존성 추가
// 여기에 추가
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.2.2'
implementation 'org.springframework.boot:spring-boot-devtools'
// 이 것 추가(버전을 따로 명시하지 않아도 starter에서 최적화 버전을 가지고 옴)
implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.h2database:h2'
testCompileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
application.properties의 jdbc 접속정보 url, driver class name 변경 😉
# 기존의 jdbc:mysql을 jdbc:log4jdbc:mysql 로 시작하는 url 로 변경(jdbc:"이 사이에 log4jdbc 추가됨":mysql)
#url: jdbc:mysql://localhost:3306/test
url: jdbc:log4jdbc:mysql://localhost:3306/test
username: test
password: 1234
# 기존의 com.mysql.jdbc.Driver를 net.sf.log4jdbc.sql.jdbcapi.DriverSpy 로 변경
#driver-class-name: com.mysql.jdbc.Driver
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
application.yml의 경우 아래처럼 url, driver class name 변경 😅
spring:
datasource:
# url: jdbc:h2:tcp://localhost/~/devlsy-service1;MODE=mySQL
# 아래처럼 변경(아래는 h2 메모리 DB 사용한 경우)
url: jdbc:log4jdbc:h2:tcp://localhost/~/devlsy-service1;MODE=mySQL
username: sa
password:
# driver-class-name: org.h2.Driver
# 드라이버명 아래처럼 변경
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
mybatis:
mapper-locations: mybatis-mapper/**/*.xml
logback.xml 수정 (이건 내 경우이고, 다른 걸 사용할 시 logger 설정 하는 곳 수정)😆
<logger name="jdbc" level="OFF"/>
<!-- sqlonly 레벨 수정-->
<logger name="jdbc.sqlonly" level="DEBUG"/>
<logger name="jdbc.sqltiming" level="DEBUG"/>
<logger name="jdbc.audit" level="OFF"/>
<logger name="jdbc.resultset" level="OFF"/>
<!-- 쿼리 결과를 테이블 형식으로 볼려면 resultsettable 레벨 수정 -->
<logger name="jdbc.resultsettable" level="DEBUG"/>
<logger name="jdbc.connection" level="OFF"/>
log4jdbc.log4j2.properties 추가 🙄
src/main/resources경로에 log4jdbc.log4j2.properties 추가 후 아래 내용 입력
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
적용 결과 😛
참조 : http://jmlim.github.io/spring/2018/12/26/spring-boot-logback-sql-pretty/
반응형
'IT > development' 카테고리의 다른 글
[jQuery]radio/checkbox 체크 여부 확인 (0) | 2022.11.19 |
---|---|
[IDE/SVN]eclipse svn branch 생성 (0) | 2022.11.19 |
[springBoot] 페이지네이션 처리(feat. MariaDB) (0) | 2022.11.19 |
[mybatis] map을 list로 받아서 화면에 그리기 (0) | 2022.11.19 |
[IDE]dbeaver 한글 깨짐 조치 (0) | 2022.11.18 |