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