无法避免使用Spring Boot和Logback将休眠日志记录到控制台SQL
尽管已经使用Logback配置了Hibernate的特定日志记录,但我的Spring Boot" title="Spring Boot">Spring Boot应用程序仍在控制台中显示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的日志(包括查询)发送到file
hibernate.log。但是我也想避免控制台中的查询,我认为这种查询应该在这种配置下发生。
我想念什么?
回答:
如果将设置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或将其完全删除即可。在Spring
Boot中,只需将其添加到您的application.properties:
spring.jpa.show-sql=false以上是 无法避免使用Spring Boot和Logback将休眠日志记录到控制台SQL 的全部内容, 来源链接: utcz.com/qa/404389.html








