Hibernate: how do you adjust the default logging level (SJF4J and JDK 1.4 logger)?
I have a JavaSE/Hibernate test app (shell-based). I put the following JARs into the project's lib dir:
antlr-2.7.6.jar
commons-collections-3.1.jar
commons-lang-2.5.jar
dom4j-1.6.1.jar
hibernate-jpa-2.0-api-1.0.0.Final.jar
hibernate3.jar
javassist-3.12.0.GA.jar
jta-1.1.jar
slf4j-api-1.6.1.jar
slf4j-jdk14-1.6.1.jar
As you can see, I'm using SLF4J with the JDK 1.4 logger. When I run my test app from the shell, Hibernate is very verbose because it is set to the INFO level by default:
09.12.2010 02:23:14 org.hibernate.annotations.common.Version <clinit>
INFO: Hibernate Commons Annotations 3.2.0.Final
09.12.2010 02:23:14 org.hibernate.cfg.Environment <clinit>
INFO: Hibernate 3.6.0.Final
09.12.2010 02:23:14 org.hibernate.cfg.Environment <clinit>
INFO: hibernate.properties not found
09.12.2010 02:23:14 org开发者_JAVA技巧.hibernate.cfg.Environment buildBytecodeProvider
INFO: Bytecode provider name : javassist
09.12.2010 02:23:14 org.hibernate.cfg.Environment <clinit>
INFO: using JDK 1.4 java.sql.Timestamp handling
09.12.2010 02:23:14 org.hibernate.ejb.Version <clinit>
INFO: Hibernate EntityManager 3.6.0.Final
09.12.2010 02:23:15 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: tld.standalone.bbstats.model.Game
09.12.2010 02:23:15 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity tld.standalone.bbstats.model.Game on table Games
09.12.2010 02:23:15 org.hibernate.cfg.AnnotationBinder bindClass
INFO: Binding entity from annotated class: tld.standalone.bbstats.model.Roster
09.12.2010 02:23:15 org.hibernate.cfg.annotations.EntityBinder bindTable
INFO: Bind entity tld.standalone.bbstats.model.Roster on table Rosters
.
.
.
How do I adjust the Hibernate logging level, to say WARNING?
EclipseLink for example let's you specify the level via a property (persistence.xml):
<property name="eclipselink.logging.level" value="INFO" />
<property name="eclipselink.logging.level.sql" value="FINE" />
Is there an equivalent in Hibernate?
I would always prefer to configure the logging framework with a central configuration file instead of several specific logging settings of libraries, because that's one of the reasons to use a logging framework at all.
Hibernate seems to follow that philosophy and since you are using JDK logging just configure the log level with a property file.
In my logging.properties file, I set:
org.hibernate.SQL.level=FINEST // Show SQL statements
org.hibernate.type.level=FINEST // Show the bind parameter values
The easiest way to stop hibernate being so verbose is to add log4j-over-slf4j.jar
to your classpath. That's because hibernate uses log4j for logging, and when you add that jar all the logging intentend to go through log4j will be redirected to slf4j.
精彩评论