Spring 4,JPA,关闭控制台调试消息

2024-03-29

我有一个基本的 Spring 4 JPA 应用程序。我使用所有 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....

我尝试在 HibernateJpaVendorAdapter 和 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();
  }

感谢您对此的任何想法!

-- 编辑 -- 更多信息

我所做的是使用 Spring Tools Suite 创建一个 Spring Starter 项目,然后选择 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();
  }
}

这就是它——一个使用 Spring Tools Suite 创建的非常基本的 JPA Spring Starter 项目。如果我能弄清楚如何处理登录,我可以将该信息转化为我的实际项目。

- 编辑 - 甚至更多信息 - 它已修复!

好吧,这很有趣...... 我更改了我的应用程序类,问题就消失了。 因此,使用这个应用程序(相对于上面发布的应用程序)并且日志记录问题现在可以了——任何人都可以评论为什么它会这样工作?

@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();
  }
}

请注意,无论我如何执行应用程序类,艾伦·海伊下面提供的解决方案也都非常有效!

请注意,无论哪种方式,您仍然可以设置 setJpaProperties,如我的配置所示(请参阅上面的 Bean)来控制是否要查看 Hibernate 的 SQL 等。


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

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

http://logback.qos.ch/translator/ http://logback.qos.ch/translator/

如果没有,请尝试将名为 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring 4,JPA,关闭控制台调试消息 的相关文章

随机推荐

  • 如何确定我的应用程序是否处于活动状态(具有焦点)

    有没有办法判断我的应用程序是否处于活动状态 即它的任何窗口都有 IsActive true 我正在编写信使应用程序 并希望它在不活动且有新消息到达时在任务栏中闪烁 使用 P Invoke 和循环 System Runtime Interop
  • SQL中的case语句,如何返回多个变量?

    我想在我的 case 语句中返回多个值 例如 SELECT CASE WHEN
  • Swift 3 中的协议扩展 [重复]

    这个问题在这里已经有答案了 我想要一个默认属性UIImageView 这将是isFlipped 我可以通过子类化来做到这一点UIImageView并添加一项属性isFlipped 但我想使用此协议和扩展 但一段时间后它崩溃了 下面是我的代码
  • 无法从 root(或 sudo)使用 NVM

    我注意到我的应用程序在运行时使用不同版本的 NodeJSsudo node v v0 10 23 sudo node v v0 11 8 pre This v0 11 8 pre给我带来了一些问题 所以我绝对不想使用它 但我无法将其更改为r
  • ANTLR 生成无效的 java 异常并抛出代码

    这些天我一直在使用 ANTLRwork 1 5 和 Antlr Runtime 3 5 这是我发现的一个奇怪的事情 Antlr 正在为我生成这种 java 代码 public final BLABLABLAParser addExpress
  • 如何正确关闭MappedByteBuffer?

    这是我正在运行的代码 import java io RandomAccessFile import java nio MappedByteBuffer import java nio channels FileChannel public
  • S/mime 时间戳支持

    好的 现在我已经有了来自 TS 提供商的时间戳 我该如何将其放入哑剧消息中才能符合标准 据我所知 没有邮件程序支持时间戳 这不会成为问题 因为我将自己处理 mime 消息 不过我想让它成为标准方式 有什么例子吗 Thanks 我认为 Mic
  • 名称中的前导箭头在 clojure 中意味着什么

    在学习 Clojure 时 我遇到了如下代码 gt defrecord Person name age user Person gt gt Person john 40 user Person name john age 40 gt Per
  • 部分模板专业化歧义

    我不明白为什么 main 中的语句不明确 template
  • 如何在hibernate注释类中使两列作为主键

    这是我的注释类 我想要userId and groupId列都作为主键 我发现了更多问题 Question https stackoverflow com q 10422680 3156758 关于这个 但没有找到相关答案 我的声誉较差 所
  • 在构建路径中出现 JRE 系统库未绑定错误

    在构建路径中出现 JRE 系统库未绑定错误 尝试了以下链接中的所有建议 但不起作用 我有jdk 1 6 0 29 我也尝试安装其他版本但没有帮助 JRE 系统库 WebSphere v6 1 JRE 未绑定 https stackoverf
  • Rails 中的 example.com/controller 和 example.com/controller/ 有什么区别?

    我有一个 PostsController 对于示例来说不是必需的 但在粘贴片段时会有所帮助 并且我正在使用current page 顾名思义 找出正在显示的页面 我得到了看起来很奇怪的结果 current page 如果我去的话会返回不同的
  • 如何在 Python 2.7 中实现 GMRES 的 ILU 预处理器?

    我正在尝试比较带 ILU 预处理器和不带 ILU 预处理器的 GMRES 求解器 当未应用预处理器时 它会运行并提供正确的答案 x 1 1 1 但是 我似乎无法找到正确应用预处理器的方法 如何让这段代码与 ILU 预处理器一起运行 impo
  • 具有大量动态子域的站点的站点地图

    我正在运行一个允许用户创建子域的网站 我想通过站点地图将这些用户子域提交给搜索引擎 但是 根据站点地图协议 和 Google 网站管理员工具 单个站点地图只能包含来自单个主机的 URL 最好的方法是什么 目前我有以下结构 站点地图索引位于
  • 递归展开树

    我正在尝试实现一个自下而上的递归展开树 我递归到需要展开的节点 并找到该节点的父节点和祖父节点 然后我就可以根据情况选择之字形或之字形 问题是完成此操作后 我将已展开一次的节点返回到先前的递归调用 先前的递归调用引用了该节点的父节点 该节点
  • ListView 行样式 - 左对齐文本和右对齐图标

    我试图让 ListView 行如下所示 Text Text Text
  • MongoDB 数据库,相当于 SELECT column1, column2 FROM tbl

    从我的 MongoDB 中我想要相当于 SELECT column1 column2 FROM tbl 通过这段代码 我得到了所有的 行 也得到了所有的 列 DBCollection collection database getColle
  • Winforms C# Outlook 风格日历

    我的任务是在 winforms C 应用程序中重新创建 MS Access 日历 我为用户创造的东西 他们讨厌 基本上 我正在将数据转储到 DataGridView 中 他们可以按月 日或员工进行搜索以获取日历事件 他们要求重新设计 使其看
  • Alamofire 具有用于快速应用程序的自定义参数编码

    我必须在我的 swift 应用程序中从 SOAP Web 服务调用一些方法 所以我认为我应该使用自定义参数编码 但是当我为此编码创建闭包时 它似乎永远不会被调用 难道我做错了什么 这是我的代码 let custom URLRequestCo
  • Spring 4,JPA,关闭控制台调试消息

    我有一个基本的 Spring 4 JPA 应用程序 我使用所有 Java 配置 根本没有 XML 我想关闭控制台调试消息 我看到了很多关于此的问题并尝试了解决方案 但我仍然看到了所有消息 控制台消息如下所示 14 58 29 301 mai