back end/java

Spring Boot JPA에서 SQL 로그 출력하기

노루아부지 2023. 11. 5. 13:39

Spring Boot와 JPA를 사용하여 데이터베이스와 상호 작용할 때 SQL 쿼리를 로그로 출력하는 것은 애플리케이션 디버깅 및 성능 튜닝에 매우 유용합니다. Spring Boot는 이를 가능하게 하는 다양한 설정 옵션을 제공합니다. 이 블로그에서는 Spring Boot 프로젝트에서 SQL 로그를 활성화하고 원하는 형식으로 출력하는 방법을 자세히 설명하겠습니다.

 

1. application.properties 또는 application.yml 설정

Spring Boot 애플리케이션에서 SQL 로그를 출력하려면 application.properties 또는 application.yml 파일에 다음과 같은 설정을 추가해야 합니다:

application.properties

# SQL 로그 출력 설정
spring.datasource.url=jdbc:your-database-url
spring.datasource.username=your-username
spring.datasource.password=your-password
spring.datasource.driverClassName=your-database-driver
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

 

 

application.yml

# SQL 로그 출력 설정
spring:
  datasource:
    url: jdbc:your-database-url
    username: your-username
    password: your-password
    driverClassName: your-database-driver
  jpa:
    show-sql: true
    properties:
      hibernate:
        format_sql: true

 

 

위의 설정을 추가하면 Spring Boot 애플리케이션은 실행 중에 실행되는 SQL 쿼리를 자동으로 로깅합니다.

 

 

2. 로그 레벨 설정

로그 레벨을 조정하여 SQL 로그의 출력 형식을 제어할 수 있습니다. Spring Boot에서는 application.properties 또는 application.yml 파일을 사용하여 로그 레벨을 설정할 수 있습니다.

# 로그 레벨 설정
logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type.descriptor.sql.BasicBinder=TRACE

 

이렇게 하면 Hibernate가 생성하는 SQL 쿼리 및 SQL 바인딩 매개변수와 관련된 정보를 DEBUG 및 TRACE 레벨의 로그로 출력합니다.

 

 

3. 로그 형식 지정

로깅 형식을 지정하여 SQL 로그의 출력을 조정할 수도 있습니다. Spring Boot의 logging.pattern.console 속성을 사용하여 출력 형식을 지정할 수 있습니다.

# 로그 형식 설정
logging.pattern.console=%d{yyyy-MM-dd HH:mm:ss} - %msg%n

 

원하는 로깅 패턴을 사용하여 SQL 로그를 포맷화할 수 있습니다.

 

 

4. 더 많은 옵션

SQL 로그를 더 세부적으로 제어하려면 Hibernate의 hibernate.cfg.xml 파일을 사용하여 추가적인 옵션을 설정할 수도 있습니다. 예를 들어, 다음과 같이 hibernate.cfg.xml 파일을 만들고 여기에 원하는 설정을 추가할 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 다양한 Hibernate 설정을 추가 -->
        <property name="hibernate.show_sql">true</property>
        <property name="hibernate.format_sql">true</property>
    </session-factory>
</hibernate-configuration>

 

728x90
loading