복붙노트

[SPRING] 스프링 부트와 로그백을 사용하여 SQL을 콘솔에 로깅하는 것을 피할 수 없다.

SPRING

스프링 부트와 로그백을 사용하여 SQL을 콘솔에 로깅하는 것을 피할 수 없다.

My Spring Boot 애플리케이션은 다음과 같이 Logback으로 Hibernate의 특정 로깅을 구성 했음에도 불구하고 콘솔에서 Hibernate 쿼리를 계속 표시합니다.

<appender name="HIBERNATE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>${LOGDIR}/hibernate.log</file>
    <encoder>
        <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
    </encoder>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${LOGDIR}/hibernate.log.%d</fileNamePattern>
    </rollingPolicy>
</appender>

<logger name="org.hibernate" additivity="false">
    <appender-ref ref="HIBERNATE"/>
</logger>

<logger name="org.hibernate.SQL" additivity="false">
    <appender-ref ref="HIBERNATE"/>
</logger>

<logger name="org.hibernate.type.descriptor.sql" additivity="false">
    <appender-ref ref="HIBERNATE"/>
</logger>

쿼리를 포함한 Hibernate의 로그를 hibernate.log 파일에 보낸다. 그러나 나는 또한 콘솔에서 쿼리를 피하기를 원할 것이다. 나는이 컨피규레이션을 가지고 있어야한다고 생각한다.

내가 뭘 놓치고 있니?

해결법

  1. ==============================

    1.hibernate.show_sql을 true로 설정하면, Hibernate는 단순히 SQL 문을 콘솔에 출력 할 것이다 (org.hibernate.SQL 아래에서의 로깅과 혼동하지 말라). SqlStatementLogger는 SQL 문을 로깅하는 역할을하며 logStatement는 다음과 같습니다.

    hibernate.show_sql을 true로 설정하면, Hibernate는 단순히 SQL 문을 콘솔에 출력 할 것이다 (org.hibernate.SQL 아래에서의 로깅과 혼동하지 말라). SqlStatementLogger는 SQL 문을 로깅하는 역할을하며 logStatement는 다음과 같습니다.

    public void logStatement(String statement, Formatter formatter) {
        if ( format ) {
            if ( logToStdout || LOG.isDebugEnabled() ) {
                statement = formatter.format( statement );
            }
        }
        LOG.debug( statement );
        if ( logToStdout ) {
            System.out.println( "Hibernate: " + statement );
        }
    }
    

    따라서, 콘솔에서 질의를보고 싶지 않다면, hibernate.show_sql을 false로 설정하거나 그냥 제거함으로써 hibernate.show_sql을 비활성화하십시오. Spring Boot에서 application.properties에 다음을 추가합니다.

    spring.jpa.show-sql=false
    
  2. ==============================

    2.나는 방금 org.hibernate.SQL이 Spring Boot JUnit 테스트에서 디버깅을 일으킬 수있는 또 다른 설정이 있음을 알았고 공유하고 싶었다.

    나는 방금 org.hibernate.SQL이 Spring Boot JUnit 테스트에서 디버깅을 일으킬 수있는 또 다른 설정이 있음을 알았고 공유하고 싶었다.

    spring.jpa.show-sql=false 
    

    spring.jpa.properties.hibernate.show_sql=false
    

    ...

    설정 한 경우

    debug=true
    

    Spring 애플리케이션 * .properties 파일에서!

    이 값을 true로 설정하면 show-sql 설정이 무시되고 true로 설정됩니다.

    Brgds

  3. ==============================

    3.기본적으로 2 개의 속성을 false로 설정해야합니다.

    기본적으로 2 개의 속성을 false로 설정해야합니다.

    Spring 부트를 사용하고 있다면 아래의 Application.properties에서 설정하십시오.

    spring.jpa.properties.hibernate.generate_statistics=false
    spring.jpa.properties.hibernate.show_sql=false
    

    그리고 만약 당신이 hibernate.cfg.xml을 사용하고 있다면, 다음과 같이 설정하십시오

    <property name="hibernate.generate_statistics">false</property>
    <property name="show_sql">false</property>
    
  4. from https://stackoverflow.com/questions/36496178/cant-avoid-hibernate-logging-sql-to-console-with-spring-boot-and-logback by cc-by-sa and MIT license