我们有一个 Spring Boot RESTful Web 应用程序。每当数据提交到端点时,日志就会完全充满表示提交过程中涉及的数据库实体的状态的数据。
查看日志我看到这个:
2019-11-01 10:50:44.686 DEBUG [https-jsse-nio-8443-exec-2] o.h.i.u.EntityPrinter [EntityPrinter.java:102] Listing entities:
然后涉及牵引的每个实体都会被打印出来......甚至是图像等的二进制数据。
我知道这是一个 DEBUG 语句,但是必须有一种方法可以处于 DEBUG 模式并且不会将所有无用的数据打印到日志中。我该如何做到这一点,如何关闭“列出实体”功能?
最佳答案
您是否在 DEBUG
日志级别模式下运行应用程序?
尝试在 application.yml
文件中将包 org.hibernate.internal.util
的日志级别设置为 INFO
。
logging:
level:
org.hibernate.internal.util: INFO
有问题的日志是由属于 org.hibernate.internal.util
包的 EntityPrinter
类 (source) 生成的,作为下面 重写实现的一部分>toString()
方法。
public void toString(Iterable<Map.Entry<EntityKey, Object>> entitiesByEntityKey) throws HibernateException {
if ( !LOG.isDebugEnabled() || !entitiesByEntityKey.iterator().hasNext() ) {
return;
}
LOG.debug( "Listing entities:" );
int i = 0;
for ( Map.Entry<EntityKey, Object> entityKeyAndEntity : entitiesByEntityKey ) {
if ( i++ > 20 ) {
LOG.debug( "More......" );
break;
}
LOG.debug( toString( entityKeyAndEntity.getKey().getEntityName(), entityKeyAndEntity.getValue() ) );
}
}
关于java - 如何禁用 Spring Boot Hibernate "Listing entities"选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661583/