java - 如何禁用 Spring Boot Hibernate "Listing entities"选项?

标签 java spring-boot logging

我们有一个 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/

相关文章:

java - 从对象列表创建列表

java - Spring boot JPA 和 Criteria API - 选择单列

java - 仅当 JUnit 测试方法失败时,如何使用 SLF4J 记录 Java 中的语句?

java - 记录 JDBC 访问的所有数据库对象

wcf - 将相关 token 传递给 WCF 服务?

java - 是否有类似 ITestResult(使用 testng)的等效类仅适用于 JUnit?

java - fragment.isVisible() 总是返回 false

java - JComboBox 搜索

java - Spring 启动 : Use different Tomcat Version

java - Spring Boot 和 AngularJS