【问题标题】:How to avoid Hibernate and JDBC logging in log4j logger如何避免在 log4j 记录器中记录 Hibernate 和 JDBC
【发布时间】:2016-06-09 09:15:55
【问题描述】:

我已经完成了所有可能的更改以避免 Hibernate 和 JDBC 记录到记录器,但我仍然在我的 JBOSS 应用程序中获得以下日志。

我不想将这些 Hibernate 和 JDBC 日志记录到记录器。

我在 log4j.properties 中的更改:

1.log4j.logger.org.hibernate=警告

2.log4j.logger.org.hibernate.SQL=OFF

log4j.logger.org.springframework.transaction=DEBUG log4j.logger.org.springframework.orm.hibernate4.HibernateTransactionManager=DEBUG

Jave 代码更改

  1. org.jboss.logging.Logger logger = org.jboss.logging.Logger.getLogger("org.hibernate");
        java.util.logging.Logger.getLogger("org.hibernate").setLevel(java.util.logging.Level.OFF);

    2. java.util.logging.Logger.getLogger("org.hibernate").setLevel(Level.OFF);

记录器输出:

关闭 Hibernate 会话 [SessionImpl(PersistenceContext[entityKeys=[],collectionKeys=[]];ActionQueue[insertions=[] 更新=[] 删除=[] collectionCreations=[] collectionRemovals=[] collectionUpdates=[]]) ] 交易后 重新启用自动提交 释放 JDBC 连接 释放 JDBC 连接 HHH000163:逻辑连接释放其物理连接 释放 JDBC 连接

【问题讨论】:

  • 请发布您的完整 log4.properties 文件。

标签: java logging wildfly


【解决方案1】:

java.util.logginglog4j 完全不同,因此您所做的代码更改不会影响您试图抑制的日志语句。

相反,注释掉这些行应该关闭这些组件的日志记录:

#log4j.logger.org.hibernate=WARNING
#log4j.logger.org.hibernate.SQL=OFF

【讨论】:

  • 仍然无法正常工作,因为我在 log4j.properties file.log4j.rootLogger = DEBUG, FILE log4j.appender.FILE=org.apache.log4j.RollingFileAppender log4j.appender.FILE 中评论了这些行。 File=${log}/dctlog.log log4j.appender.FILE.MaxFileSize=10MB log4j.appender.FILE.MaxBackupIndex=10 log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout .ConversionPattern=%m%n log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  • 将您的根记录器级别从 DEBUG 提高到 INFO:log4j.rootLogger=INFO, stdout, FILE;哦,您绝对应该将您的 log4j.properties 文件粘贴到您的问题中,而不是像您所做的那样作为评论。
【解决方案2】:

假设您使用的是由容器日志记录提供的 Hibernate,它将由日志记录子系统配置,而不是您的 log4j.properties 文件。

您可以使用以下 CLI 命令关闭 SQL 日志记录并将 Hibernate 更改为仅在警告级别记录。

/subsystem=logging/logger=org.hibernate:add(level=WARN)
/subsystem=logging/logger=org.hibernate.SQL=OFF

据我所知,默认情况下 Hibernate 不记录 SQL 语句。检查您的 persistence.xml 以确保您没有在那里打开 SQL 语句的日志记录。

【讨论】:

  • ,我只使用休眠来获取 SeesionFactory 对象并使用 SQLQuery 对象运行查询,如下所示。 @Autowired SessionFactory sessionFactory; SQLQuery 查询 = sessionFactory.getCurrentSession().createSQLQuery("");结果列表 = query.list();我没有任何persistence.xml,我的hibernate.cfg.xml 文件是空的。我不知道在哪里更改以阻止logger 中的hibernate 和sql 日志。
猜你喜欢
  • 2012-10-08
  • 1970-01-01
  • 2022-01-20
  • 2010-12-20
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多