2011-03-30 136 views
2

我構式我的休眠log4j的休眠錯誤

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). 
log4j:WARN Please initialize the log4j system properly. 

的時候,這裏是代碼行得到這個錯誤

Configuration config = new AnnotationConfiguration().configure("HibernatePositionServer.cfg.xml"); 

,這裏是我的CFG文件

<?xml version='1.0' encoding='utf-8'?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <!--<property name="connection.url">jdbc:mysql://[Here i put correct IP:Port]/settings</property>--> 
    <!--<property name="connection.url">jdbc:mysql://127.0.0.1:1433/settings</property>--> 

    <property name="connection.driver_class">org.gjt.mm.mysql.Driver</property> 
    <property name="connection.username">root</property> 
    <property name="connection.password">Programa17</property> 

    <property name="connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property> 
    <property name="hibernate.c3p0.timeout">300</property> 
    <property name="hibernate.c3p0.idle_test_period">150</property> 
    <property name="hibernate.c3p0.min_size">1</property> 
    <property name="hibernate.c3p0.max_size">1</property> 

    <!-- DB schema will be updated if needed --> 
    <property name="hibernate.show_sql">true</property> 
    <property name="hbm2ddl.auto">update</property> 
    <!--<property name="hbm2ddl.auto">update</property>--> 
    <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> 

</session-factory> 

回答

7

首先詢問Google,這是最常見的Log4J錯誤消息之一。簡單地說:Log4J(日誌和監視框架)從Hibernate收到日誌消息,不知道該如何處理它(在控制檯上打印,放入文件,忽略...?)

將文件命名爲log4j.xml CLASSPATH根目錄(使用maven時src/main/resource)具有以下內容:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
    </appender> 

    <root> 
    <priority value ="debug" /> 
    <appender-ref ref="console" /> 
    </root> 

</log4j:configuration> 
+0

謝謝。我使用'Eclipse'來做一個'hibernate'的例子。當我將'log4j.properties'放在'src'文件夾中時,我不會收到這個警告。但是,當我把它放在'src/resources'文件夾下時,我得到警告。爲什麼會發生這種情況,我如何使eclipse參考正確的文件夾? – 2014-04-25 00:03:00

+0

謝謝!,它對Spring hibernate有很大的幫助 – 2016-08-21 12:15:33

0

我有同樣的error.There兩個原因這個錯誤

  1. 有你庫中的兩個log4j的jar文件在不同的位置灰。

  2. 屬性文件log4j.properties沒有出現在你的應用程序中的默認包。

爲什麼這個錯誤彈出是hibernate.config和log4j的應該是在同一個包

0

我終於得到了在我的情況發生。它也可能幫助那些在Netbeans用戶面臨同樣問題的人,因爲我現在已經失去了很多頭髮。我的應用程序剛剛停止記錄到控制檯,所以我無法調試,因爲沒有顯示錯誤。

答案「在不同位置的庫中有兩個log4j jar文件。」是真的。最初我期望找到2個文件,名稱爲log4xxx.jar,當然有不同的版本號,但是沒有那樣的文件存在。您看到Netbeans預先包含了Hibernate庫和其他許多庫。因此,當在Netbeans中開發hibernate應用程序時,您不需要手動添加您自己的Hibernate Jars,除非您需要特定的版本等,您可以通過右鍵單擊項目 - Properties - Libraries - 將Hibernate庫添加到應用程序中。添加庫按鈕。這會在運行時在後臺/類路徑中添加許多hibernate Jars,並且還會在dist/lib文件夾中編譯但不在應用程序的lib中。在我的情況下,我添加了兩個Hibernate Library,並且還將生成的hibernate jar從dist/lib複製到lib。這發生了錯誤,因爲我從以前的應用程序中複製了庫,以包含在我的新應用程序中用於此處。如果在NetBeans中,轉到您的lib文件夾,如果看到類似 的jar文件,hibernate-commons-annotations-xxxFinal.jar,hibernate-core-xxxFinal.jar,hibernate-entitymanager-xxx Final.jar,hibernate-jpa-2.0-api-xxxFinal.jar,hibernate-tools-xxxCR1.jar 刪除它們並檢查是否解決錯誤。