Spring4,JPA,关闭控制台调试消息

Spring4,JPA,关闭控制台调试消息,spring,jpa,configuration,Spring,Jpa,Configuration,我有一个基本的Spring4JPA应用程序。我使用所有Java配置(根本没有XML)。我想关闭控制台调试消息。我看到了很多关于这方面的问题,并尝试了解决方案,但我仍然看到了所有的信息 控制台消息如下所示: 14:58:29.301 [main] DEBUG o.h.loader.entity.plan.EntityLoader.... 14:58:29.328 [main] INFO o.h.tool.hbm2ddl.SchemaUpdate.... .... 14:58:29.905 [ma

我有一个基本的Spring4JPA应用程序。我使用所有Java配置(根本没有XML)。我想关闭控制台调试消息。我看到了很多关于这方面的问题,并尝试了解决方案,但我仍然看到了所有的信息

控制台消息如下所示:

14:58:29.301 [main] DEBUG o.h.loader.entity.plan.EntityLoader....
14:58:29.328 [main] INFO  o.h.tool.hbm2ddl.SchemaUpdate....
....
14:58:29.905 [main] DEBUG o.h.h.i.ast.QueryTranslatorImpl - --- HQL AST ---
    \-[QUERY] Node: 'query'
      \-[SELECT_FROM] Node: 'SELECT_FROM'
      +-[FROM] Node: 'from'
       |  \-[RANGE] Node: 'RANGE'
       |     +-[DOT] Node: '.'
       |     |  +-[IDENT] Node: 'hello'
       |     |  \-[IDENT] Node: 'Customer'
       |     \-[ALIAS] Node: 'generatedAlias0'
    \-[SELECT] Node: 'select'
     \-[IDENT] Node: 'generatedAlias0'
....
Hundreds of lines more....
我尝试在HibernateJavaEndorapter和LocalContainerEntityManagerFactoryBean中设置show_sql,如下所示:

@Bean
  public EntityManagerFactory entityManagerFactory() throws SQLException {
    HibernateJpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
    vendorAdapter.setGenerateDdl(true);
    vendorAdapter.setShowSql(false);

    LocalContainerEntityManagerFactoryBean factory = new
        LocalContainerEntityManagerFactoryBean();
    factory.setJpaVendorAdapter(vendorAdapter);
    factory.setPackagesToScan("hello");
    factory.setDataSource(dataSource());

    Properties jpaProperties = new Properties();
    jpaProperties.put( "hibernate.dialect", "org.hibernate.dialect.MySQLDialect" );
    jpaProperties.put( "hibernate.show_sql", false );
    jpaProperties.put( "show_sql", false );
    jpaProperties.put( "hibernate.generate_statistics", false );
    factory.setJpaProperties(jpaProperties);
    factory.afterPropertiesSet();
    return factory.getObject();
  }
谢谢你在这方面的任何想法

--编辑--更多信息

我要做的是用SpringTools套件创建一个SpringStarter项目,然后只选择JPA。然后将MySQL添加到pom.xml中

作为测试,我有一个基本的Customer和CustomerRepository类以及上面提到的JPA配置

我的申请类别:

@Configuration
@EnableAutoConfiguration
public class Application {

  public static void main(String[] args) {

    AbstractApplicationContext context = new
      AnnotationConfigApplicationContext(JPAConfiguration.class);

      CustomerRepository repository = context.getBean(CustomerRepository.class);

      //use the repository.....

      ((AbstractApplicationContext) context).close();
      context.close();
  }
}
就是这样——一个非常基本的JPA Spring初学者项目,使用Spring工具套件创建。如果我能弄清楚如何处理登录,我就可以将这些信息转化为我的实际项目

——编辑——甚至更多信息——这是固定的

好的,这很有趣。。。 我换了应用程序类,问题就解决了。 所以使用这个应用程序(与上面发布的应用程序相比)和日志记录问题现在可以解决了——有谁能解释一下为什么会这样

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

  public static void main(String[] args) {

    ConfigurableApplicationContext context =
      SpringApplication.run(Application.class);

    CustomerRepository repository = context.getBean(CustomerRepository.class);

    //use the repository.....

    context.close();
  }
}
请注意,无论我如何使用应用程序类,Alan Hay提供的以下解决方案也非常有效


注意,无论采用哪种方式,您都可以设置setJpaProperties,如我的配置(参见上面的Bean)所示,以控制您是否想要查看Hibernate的SQL等。

我最近遇到了同样的问题。Spring4似乎使用logback库进行日志记录,而我的应用程序只有一个log4j配置文件。为logback添加一个额外的日志配置文件解决了这个问题

如果您有一个现有的log4j配置文件,这里有一个将其转换为logback格式的工具:

如果没有,请尝试将名为logback.xml的文件添加到类路径的根目录中:

<?xml version="1.0" encoding="UTF-8"?>                                                              
<configuration>
  <appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{dd MMM yyyy HH:mm:ss} %-4r [%t] %-5p %c %x - %m%n</pattern>
    </encoder>
  </appender>
  <logger name="org.springframework" level="ERROR"/>
  <logger name="org.hibernate" level="ERROR"/>
  <root level="DEBUG">
    <appender-ref ref="A1"/>
  </root>
</configuration>

%d{dd MMM yyyy HH:mm:ss}%-4r[%t]-5p%c%x-%m%n

检查是否需要更改Hibernate日志记录级别这非常有效!有没有一种不使用XML的方法(就像我在上面的示例中配置Hibernate的方法一样)?另请参阅我在上面发布的关于另一种工作方式的编辑信息。简要说明:我发现此模式最适合我的JPA应用程序:%d{HH:mm:ss.SSS}[%thread]-5级别%logger{36}-%msg%n