스프링부트-로그로 쿼리 확인하기(Gradle)
스프링부트 서버를 가동시키면 위와 같이 콘솔창에 여러 정보들이 올라가는 것을 확인할 수 있는데, 이를 모두 로그라고 한다.
또한, 각각 다른 색으로 표시되는 INFO,WARN등을 확인할 수 있는데 이를 로그의 레벨이라고 한다.
Trace < Debug < Info < Warn < Error
로그의 레벨에는 위와 같이 5가지가 있으며, 상황에 맞추어 혹은 패키지나 클래스에 맞추어도 설정이 가능하다.
쿼리를 로그로 출력하기
데이터베이스에 쿼리가 실행될 때마다 로그로 확인할 수 있도록 설정해보자.
1) log4jdbc-log4j2 라이브러리 추가
화면과 같이 build.gradle
에 log4jdbc-log4j2 라이브러리를 추가해준다. (추가 후 refresh gradle 꼭 해주기)
2) datasource url 및 driver-class-name 변경
다음으로, application.yml의 설정을 다음과 같이 변경해준다.
변경 전:
변경 후:
3) log4jdbc.log4j2.properties 파일 생성
src>main>resources
하위에 log4jdbc.log4j2.properties
파일을 추가해준다.
이후, 파일 내에 다음과 같이 작성한다.
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator
log4jdbc.dump.sql.maxlinelength=0
4) logback.xml 파일 생성
이제, log를 출력할 수 있는 환경은 모두 설정했으니 로그의 종류에 따라 출력할 수 있도록 logback.xml
파일을 생성한다.
위의 properties 파일과 마찬가지로 src>main>resources
하위에 생성한다.
파일을 생성했다면, 로그의 종류에 따라 5단계의 레벨 중 어느 레벨에 맞추어 출력할지 설정해준다.
로그의 종류는 아래와 같다.
- 로그의 종류
로그명 | |
---|---|
jdbc.sqlresultsettable | 쿼리의 결과로 가져온 데이터를 테이블 형태로 로그에 남긴다. |
jdbc.resultset | jdbc의 모든 호출 정보를 로그에 남긴다 -> 많은 양의 로그가 발생하므로, 주로 끄고 사용하는 것을 추천함 |
jdbc.audit | 위의 resultset을 제외한 모든 jdbc의 호출 정보를 로그에 남긴다 -> 이 역시 많은 양의 로그가 발생, 끄고 사용하는 것을 추천함. |
jdbc.connection | jdbc 커넥션의 open, close 마다 로그에 남긴다. |
jdbc.sqlonly | 쿼리 문장만을 로그에 남긴다. |
jdbc.sqltiming | 쿼리문과 해당 쿼리를 실행하는데에 시간이 얼마나 걸렸는지 로그에 남긴다. |
쿼리문 + 실행시간과 함께 결과를 테이블로 확인하기 위해 sqlresultsettable 과 sqltiming 로그만을 활성화하려고 한다.
logback.xml :
다음과 같이 <logger name = "로그명" level="원하는 레벨"> 의 형태로 작성해줄 수 있다.
참고로, appender란 로그 기록을 담당하는 객체로, 로그의 출력 형식이나 위치 등을 설정할 수 있다.
우리는 콘솔에 출력할 것이므로 ConsoleAppender를 class로 지정해준다.
5) 테스트
모든 설정을 완료했으니, 조회 api를 호출해 콘솔을 확인해보자.다음과 같이, 우리가 설정한 형식대로 출력이 잘 되는 것을 확인할 수 있다.
Author And Source
이 문제에 관하여(스프링부트-로그로 쿼리 확인하기(Gradle)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@minji/스프링부트-로그로-쿼리-확인하기Gradle저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)