2010-11-06 72 views
4

我正在使用Hibernate作爲個人項目。 在我的項目,我有這些目錄:無法禁用休眠日誌消息

+ CONF
log4j.properties
+斌
我的班

使用Windows控制檯,我去項目目錄(bin和conf的父親),然後用這樣的命令啓動應用程序:

java -cp conf;lib/lib1.jar;lib/lib2.jar;[etc] com.moc.Main

我log4j.properties文件是這樣(從休眠示例截取):

 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d - %m%n 

log4j.rootLogger=info, stdout 

log4j.logger.org.hibernate=error 
log4j.logger.org.hibernate.tool.hbm2ddl=error 
log4j.logger.org.hibernate.hql.ast.QueryTranslatorImpl=error 
log4j.logger.org.hibernate.hql.ast.HqlSqlWalker=error 
log4j.logger.org.hibernate.hql.ast.SqlGenerator=error 
log4j.logger.org.hibernate.hql.ast.AST=error 

在應用程序啓動,這是輸出:

 
2010-11-06 19:00:56,376 - Logger.getRootLogger().info() statement 
12 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.3-Final 
13 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found 
16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist 
20 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling 
108 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: com/moc/hibernate.cfg.xml 
108 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: com/moc/hibernate.cfg.xml 
124 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from file: conf\hiber\Customer.hbm.xml 
. 
. 
. 
and so on 
. 
. 
. 
795 [main] INFO org.hibernate.impl.SessionFactoryImpl - closing 
795 [main] INFO org.hibernate.connection.DriverManagerConnectionProvider - cleaning up connection pool: jdbc:mysql://localhost/mydb 

的休眠日誌行的顏色是紅色的,我的日誌線是黑色的。

爲什麼我仍然看到Hibernate的INFO輸出?我究竟做錯了什麼?

+0

Hibernate使用SFL4J進行日誌記錄。你的類路徑中究竟有哪些JAR?什麼SFL4J綁定?你只有log4j作爲日誌後端? – 2010-11-07 09:47:24

回答

2

檢查你的log4j的配置,並在運行時存在的事件被添加 -Dlog4j.debug選項Java命令行的一個好方法。在你的情況下,它會變成:

java -Dlog4j.debug -cp conf;lib/lib1.jar;lib/lib2.jar;[etc] com.moc.Main 

這將引發對log4j配置的裝載順序的控制檯的信息。然後您可以確定您的log4j.properties是否正確加載。

0

您的log4j配置看起來不錯,您的log4j.properties文件是否在類路徑和根包中?即它在conf的根目錄下,lib1.jar,lib2.jar在你的類路徑中的任何其他jar /目錄中?

試試這個來檢查文件是否正確加載。

在此行中:

log4j.rootLogger=info, stdout 

CHAGE到

log4j.rootLogger=error, stdout 

這將設置爲根記錄器,因此所有記錄出錯,如果你仍然看到INFO日誌條目的日誌級別那麼你的log4j.properties文件一定不能正確加載,最有可能是出於上述原因。

+0

我的應用程序能夠看到log4j.properties,因爲對於rootLogger的錯誤級別,我看不到我的Logger.getRootLogger()。info(「hello」); - 要加載conf文件,我使用PropertyConfigurator.configure(「conf/log4j。屬性「);作爲我的應用程序的第一步。log4j.properties在conf/log4j.properties中。我試圖把它放在bin中(請參閱我的文章中的dir層次結構),但沒有任何更改 – Antonio 2010-11-06 21:55:30

0

你可以試試這個語法嗎?

log4j.category.org.hibernate=ERROR