1. 개요

Spring JDBCJPA 는 개발자가 네이티브 SQL 쿼리를 제거 할 수 있도록 네이티브 JDBC API에 대한 추상화를 제공합니다. 그러나 종종 자동 생성 된 SQL 쿼리와 디버깅 목적으로 실행 된 순서를 확인해야합니다.

이 빠른 자습서에서는 Spring Boot에서 이러한 SQL 쿼리를 로깅하는 다양한 방법을 살펴볼 것입니다.

2. JPA 쿼리 로깅

2.1. 표준 출력으로

가장 간단한 방법은 쿼리를 표준 출력으로 덤프하는 것입니다 . application.properties에 다음을 추가하는 것입니다 .

spring.jpa.show-sql=true

SQL을 아름답게하거나 예쁘게 인쇄하기 위해 다음을 추가 할 수 있습니다.

spring.jpa.properties.hibernate.format_sql=true

이것은 매우 간단하지만 로깅 프레임 워크를 최적화하지 않고 모든 것을 표준 출력으로 직접 언로드하므로 권장되지 않습니다 .

또한 준비된 문의 매개 변수를 기록하지 않습니다.

2.2. 로거를 통해

이제 속성 파일에서 로거를 구성하여 SQL 문을 기록하는 방법을 살펴 보겠습니다.

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

첫 번째 행은 SQL 쿼리를 기록하고 두 번째 명령문은 준비된 명령문 매개 변수를 기록합니다.

pretty print 속성은이 구성에서도 작동합니다.

이러한 속성을 설정 하면 구성된 어 펜더로 로그가 전송됩니다 . 기본적으로 Spring Boot는 표준 출력 어 펜더와 함께 로그 백사용합니다 .

3. JdbcTemplate 쿼리 로깅

JdbcTemplate을 사용할 때 문 로깅을 구성하려면 다음 속성이 필요합니다.

logging.level.org.springframework.jdbc.core.JdbcTemplate=DEBUG
logging.level.org.springframework.jdbc.core.StatementCreatorUtils=TRACE

JPA 로깅 구성과 유사하게 첫 번째 줄은 문을 로깅하기위한 것이고 두 번째 줄은 준비된 문의 매개 변수를 로깅하는 것입니다.

4. 어떻게 작동합니까?

SQL 문을 생성하고 매개 변수를 설정하는 Spring / Hibernate 클래스 에는 이미 로깅을위한 코드가 포함되어 있습니다 .

그러나 이러한 로그 문의 수준은 각각 DEBUGTRACE로 설정 되어 Spring Boot – INFO 의 기본 수준보다 낮습니다 .

이러한 속성을 추가하여 해당 로거를 필요한 수준으로 설정하는 것입니다.

5. 결론

이 짧은 기사에서는 Spring Boot에서 SQL 쿼리를 기록하는 방법을 살펴 보았습니다.

여러 어 펜더구성하도록 선택하면 SQL 문과 기타 로그 문을 서로 다른 로그 파일로 분리하여 깔끔하게 유지할 수 있습니다.