无法避免使用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_sqltrue,则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

回到顶部