gar*_*560 12 java spring hibernate logback spring-boot
尽管使用Logback配置了Hibernate的特定日志记录,我的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>
Run Code Online (Sandbox Code Playgroud)
它会将Hibernate的日志(包括查询)发送到文件hibernate.log.但我还想避免在控制台中进行查询,我认为应该使用此配置进行查询.
我错过了什么?
Ali*_*ani 13
如果你设置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 );
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您不想在控制台上查看查询,只需hibernate.show_sql将其设置为禁用false或仅删除它.在Spring Boot中,只需将其添加到您的application.properties:
spring.jpa.show-sql=false
Run Code Online (Sandbox Code Playgroud)
小智 7
我只是想分享一下我刚刚注意到的另一种设置,它可能导致org.hibernate.SQL在Spring Boot JUnit测试中调试。
spring.jpa.show-sql=false
Run Code Online (Sandbox Code Playgroud)
和
spring.jpa.properties.hibernate.show_sql=false
Run Code Online (Sandbox Code Playgroud)
...
如果您设定
debug=true
Run Code Online (Sandbox Code Playgroud)
在您的Spring application * .properties文件中!
将此设置为true将覆盖show-sql设置并将其设置为true。
g
基本上,您需要将2个属性设置为false。
如果您使用的是Spring boot,则在Application.properties中进行如下设置
spring.jpa.properties.hibernate.generate_statistics=false
spring.jpa.properties.hibernate.show_sql=false
Run Code Online (Sandbox Code Playgroud)
如果您使用的是hibernate.cfg.xml,请按照以下步骤进行设置
<property name="hibernate.generate_statistics">false</property>
<property name="show_sql">false</property>
Run Code Online (Sandbox Code Playgroud)
如果有人尝试了以上所有方法但仍有问题,请尝试设置属性:
logging.level.org.hibernate.SQL=OFF
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13314 次 |
| 最近记录: |