2016-04-08 4 views
4

My Frühlings-Boot-Anwendung hält zeigt Hibernate-Abfragen in der Konsole obwohl er konfiguriert Hibernate spezifische Protokollierung mit Logback vermeiden wie folgt:Kann nicht Hibernate Protokollierung SQL auf die Konsole mit Frühlings-Boot und Logback

<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> 

Es Hibernate schickt Protokolle, einschließlich Abfragen, in die Datei hibernate.log. Aber ich möchte auch die Abfragen in der Konsole vermeiden, die meiner Meinung nach mit dieser Konfiguration passieren sollten.

Was fehlt mir?

+0

Ist 'hibernate.show_sql' Config aktiviert? Wenn ja, deaktivieren Sie einfach –

Antwort

6

Wenn Sie hibernate.show_sql auf true setzen, druckt Hibernate die SQL-Anweisung einfach auf die Konsole (nicht zu verwechseln mit der Protokollierung unter org.hibernate.SQL). SqlStatementLogger ist verantwortlich für die Anmeldung die SQL-Anweisungen und seine logStatement wie folgt aussieht:

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); 
    } 
} 

Also, wenn Sie nicht die Abfragen auf der Konsole sehen möchten, deaktivieren Sie einfach die hibernate.show_sql indem es false Einstellung oder es komplett zu entfernen, . Im Frühjahr Stiefel, fügen Sie einfach diese zu Ihrem application.properties:

spring.jpa.show-sql=false 
+1

dachte nicht, dass es so einfach sein könnte. Danke – garci560

+0

LOG.isDebugEnabled() bedeutet, dass es auch durch Logger-Konfiguration wie Logback gesteuert – xiaoyifang

+0

Ich zeigte auf den LogToStdout Teil –

0

Ich wollte nur teilen, dass ich sich gerade bemerkte eine andere Einstellung, die dazu führen könnte, org.hibernate.SQL im Frühjahr Boot-JUnit-Tests zu debuggen, obwohl könnten Sie gesetzt haben

spring.jpa.show-sql=false 

und

spring.jpa.properties.hibernate.show_sql=false 

...

Wenn Sie in Ihrer Spring-Anwendung * .properties-Datei

debug=true 

setzen!

Dieser eine Wert wird auf true gesetzt und überschreibt die Einstellung show-sql und setzt sie auf true.

Brgds