Spring4,JPA,关闭控制台调试消息
我有一个基本的Spring4JPA应用程序。我使用所有Java配置(根本没有XML)。我想关闭控制台调试消息。我看到了很多关于这方面的问题,并尝试了解决方案,但我仍然看到了所有的信息 控制台消息如下所示: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
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