我遇到了禁用hibernates日志系统的问题。 我尝试创建一个log4j.properties文件并将属性rootLogger设置为false但它没有做任何事情。
我在控制台中得到的是:
Jul 04, 2015 8:01:52 PM org.hibernate.annotations.common.Version <clinit>
INFO: HCANN000001: Hibernate Commons Annotations {4.0.2.Final}
Jul 04, 2015 8:01:52 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.2.2.Final}
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Environment <clinit>
INFO: HHH000206: hibernate.properties not found
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: Database/hibernate.cfg.xml
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: Database/hibernate.cfg.xml
Jul 04, 2015 8:01:52 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: Database/Entities/User.hbm.xml
Jul 04, 2015 8:01:52 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
Jul 04, 2015 8:01:52 PM org.hibernate.cfg.Configuration doConfigure
INFO: HHH000041: Configured SessionFactory: null
Jul 04, 2015 8:01:52 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000402: Using Hibernate built-in connection pool (not for production use!)
Jul 04, 2015 8:01:52 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000115: Hibernate connection pool size: 20
Jul 04, 2015 8:01:52 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000006: Autocommit mode: false
Jul 04, 2015 8:01:52 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/gameserver]
Jul 04, 2015 8:01:52 PM org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl configure
INFO: HHH000046: Connection properties: {user=root, password=****}
Jul 04, 2015 8:01:53 PM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Jul 04, 2015 8:01:53 PM org.hibernate.engine.transaction.internal.TransactionFactoryInitiator initiateService
INFO: HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory
Jul 04, 2015 8:01:53 PM org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory <init>
INFO: HHH000397: Using ASTQueryTranslatorFactory
如何禁用输出控制台的所有消息?
我正在使用Hibernate 4.2.2
答案 0 :(得分:1)
尝试将根记录器设置为ERROR级别:
String
确保在类路径中有SLF4J和LOG4J,因为Hibernate可能会回退到使用其他日志框架。
当Hibernate开始检查日志记录提供程序时,尝试在log4j.logger.org.hibernate=error
中添加断点。
答案 1 :(得分:0)
我必须在我的maven中添加以下依赖项才能摆脱日志记录。我正在使用Hibernate 4和Log4j2
<Logger name="org.hibernate" additivity="false" level="error"/>
maven POM:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>4.3.11.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.2.0.Final</version>
</dependency>
答案 2 :(得分:0)
我的情况非常相似,在我的应用程序启动过程中创建EntityManagerFactory时,我试图找到一种方法来禁用Hibernate的日志记录。在我看来,我在StackOverflow上找到的答案都没有。我正在使用Hibernate 5.2.10.Final,它使用jboss-logging-3.3.0.Final。
我必须通过获取&#34;空命名&#34;来禁止所有日志消息的极端措施或黑客攻击。 java.util.logging.Logger
并将其级别设置为java.util.logging.Level.SEVERE
因此:
private void disableLogging() {
LogManager logManager = LogManager.getLogManager();
Logger logger = logManager.getLogger("");
logger.setLevel(Level.SEVERE); //could be Level.OFF
}
但是,由于这是所有Logger
的父级,因此这也会影响您正在使用的任何其他Logger
。您可能希望之后将等级(后退)设置为另一个等级。