2011-03-30 140 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 删除它们并检查是否解决错误。