수색…


비고

이러한 쿼리를 로깅하는 것은 느리며 , 일반적으로 Hibernate보다 느리다. 또한 엄청난 양의 로그 공간을 사용합니다. 성능이 필요한 시나리오에서 로깅을 사용하지 마십시오. Hibernate가 실제로 생성 한 질의를 테스트 할 때에 만 이것을 사용하라.

로깅 설정 파일 사용하기

선택한 로깅 구성 파일에서 다음 패키지 로깅을 표시된 수준으로 설정하십시오.

# log the sql statement
org.hibernate.SQL=DEBUG
# log the parameters
org.hibernate.type=TRACE

아마도 로거에 특정한 접두어가 필요할 것입니다.

Log4j 설정 :

log4j.logger.org.hibernate.SQL=DEBUG
log4j.logger.org.hibernate.type=TRACE

Spring 부트 application.properties :

logging.level.org.hibernate.SQL=DEBUG
logging.level.org.hibernate.type=TRACE

logback.xml :

<logger name="org.hibernate.SQL" level="DEBUG"/>
<logger name="org.hibernate.type" level="TRACE"/>

최대 절전 모드 속성 사용하기

이렇게하면 생성 된 SQL이 표시되지만 쿼리에 포함 된 값은 표시되지 않습니다.

<bean id="sessionFactory"
    class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <property name="hibernateProperties">
        <props>
            <!-- show the sql without the parameters -->
            <prop key="hibernate.show_sql">true</prop>
            <!-- format the sql nice -->
            <prop key="hibernate.format_sql">true</prop>
            <!-- show the hql as comment -->
            <prop key="use_sql_comments">true</prop>
        </props>
    </property>
</bean>

디버그에서 SQL 로그인 사용 / 사용 안 함

Hibernate를 사용하는 일부 응용 프로그램은 응용 프로그램이 시작될 때 엄청난 양의 SQL을 생성합니다. 때때로 디버깅 할 때 특정 지점에서 SQL 로그를 활성화 / 비활성화하는 것이 좋습니다.

사용하려면 응용 프로그램을 디버깅 할 때 IDE에서이 코드를 실행하십시오.

org.apache.log4j.Logger.getLogger("org.hibernate.SQL")
    .setLevel(org.apache.log4j.Level.DEBUG)

사용 중지하려면 다음을 수행하십시오.

org.apache.log4j.Logger.getLogger("org.hibernate.SQL")
    .setLevel(org.apache.log4j.Level.OFF)


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow