【问题标题】:What is missing from my log4j configuration that org.hibernate.cfg.annotations.Version requires?我的 org.hibernate.cfg.annotations.Version 需要的 log4j 配置缺少什么?
【发布时间】:2014-02-21 20:24:28
【问题描述】:

我试图弄清楚为什么我们的 Hibernate 代码没有将任何内容记录到 log4j。我整理了一个简单的项目,该项目调用了一个 Hibernate 服务方法,该方法将 log4j 消息记录为第一行。

项目和 Hibernate 服务都有以下 log4j 特定代码:

private static Logger NTEVENT_LOG = Logger.getLogger("NTEVENT");
NTEVENT_LOG.debug("==== LOG4J logging");

当我运行项目 (Eclipse->run) 时,我收到以下红色消息:

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

但是在我看到应用程序本身的日志记录之后,log4j 的某些部分确实得到了正确初始化。但是,Hibernate 服务没有记录任何内容。

[main] DEBUG NTEVENT  - ==== LOG4J logging

这是我的 log4j.xml

<appender name="NTEVENT" class="org.apache.log4j.ConsoleAppender"> 
    <layout class="org.apache.log4j.PatternLayout"> 
        <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n"/> 
    </layout> 
</appender> 

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

我一定错过了 Hibernate 期待的东西,但我不知道是什么。

【问题讨论】:

  • 尝试输入类似“log4j.logger.org.hibernate=DEBUG”的内容(抱歉,这是用于普通配置文件,而不是 xml)

标签: java hibernate logging log4j


【解决方案1】:

要使用 xml 文件配置 log4j,您需要在 main 中使用 DOMConfigurator.configure() 方法。

同样对于这个方法你需要导入 org.apache.log4j.xml.DOMConfigurator 包。

public static void main(String[] args) {

DOMConfigurator.configure("log4j.xml");

..//your code
..
}

希望这会有所帮助..!!

【讨论】:

    【解决方案2】:

    问题是 ThrashBean 暗示的,未启用 org.hibernate 的日志记录。如果您想查看 Hibernate 调试输出,例如查询,您需要:

    【讨论】:

    • 由于某种原因,代码在最后一条评论中没有保留下来。这里是:
    【解决方案3】:

    我终于明白了我的情况。它也可能帮助那些面临同样问题的 Netbeans 用户,因为我已经失去了好几个月的头发。我的应用程序刚刚停止记录到控制台,所以我无法调试,因为没有显示错误。

    答案“您的库中有两个不同位置的 log4j jar 文件。”是真的。最初,我希望找到 2 个名称为 log4xxx.jar 的文件,当然版本号不同,但根本没有这样的文件。您会看到 Netbeans 预装了 Hibernate 库,当然还有许多其他库。因此,当在 Netbeans 中的休眠应用程序中开发时,您不需要手动添加自己的 Hibernate Jars,除非您当然需要特定版本等,您可以通过右键单击项目将 Hibernate 库添加到您的应用程序 - 属性 - 库 -添加库按钮 。这将在运行时以及在 dist/lib 文件夹中的编译时在后台/类路径中添加许多休眠 Jar,但不在应用程序的 lib 中。在我的情况下,我添加了 Hibernate 库并将生成的 hibernate jar 从 dist/lib 复制到 lib。这是错误发生的,因为我从以前的应用程序中复制了库以包含在我的新应用程序中以供在那里使用。

    所以带回家点,如果在 Netbeans 中,去你的 lib 文件夹,如果你看到像这样的 jars hibernate-commons-annotations-x.x.x.Final.jar,hibernate-core-x.x.x.Final.jar,hibernate-entitymanager-x.x.x.Final.jar,hibernate-jpa-2.0-api-x.x.x.Final.jar,hibernate-tools-x.x.x.CR1.jar 删除它们并检查错误是否解决。

    【讨论】:

      猜你喜欢
      • 2017-06-17
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 1970-01-01
      • 2019-05-30
      • 2021-05-05
      • 2019-07-01
      相关资源
      最近更新 更多