Hibernate Log4j+;冬眠5+;Weblogic 12.2.1

Hibernate Log4j+;冬眠5+;Weblogic 12.2.1,hibernate,logging,log4j,log4j2,weblogic12c,Hibernate,Logging,Log4j,Log4j2,Weblogic12c,我使用Hibernate 5.2.10.Final、log4j 1.2.17(from)、Weblogic 12.2.1。这就是我的log4j.xml的样子: ),将hibernate记录器/类别添加到mylog4j.xml,例如: 一点进展也没有,不管我做了什么改变,都好像没有效果(当然,除非我犯了一些错误)。我开始认为Weblogic是幕后推手,我猜Hibernate日志会转到错误输出,Weblogic会将它们重定向到他的文件,不知道为什么我不能强制它们登录到mylog.log 我最关

我使用Hibernate 5.2.10.Final、log4j 1.2.17(from)、Weblogic 12.2.1。这就是我的
log4j.xml
的样子:


),将hibernate记录器/类别添加到my
log4j.xml
,例如:


一点进展也没有,不管我做了什么改变,都好像没有效果(当然,除非我犯了一些错误)。我开始认为Weblogic是幕后推手,我猜Hibernate日志会转到错误输出,Weblogic会将它们重定向到他的文件,不知道为什么我不能强制它们登录到
mylog.log


我最关心的是异常,我希望看到它们与我的所有自定义日志一起出现,而不是隐藏在Weblogic域文件的某个地方。

有时处理Java EE应用程序服务器(尤其是WLS)时,如果不完全了解它们的类加载机制,可能会令人沮丧。长话短说,为了使WLS 12能够工作,您需要指示WebLogic使用部署描述符(WebLogic.xml)从应用程序库中选择org.jboss.logging.*包(来自jboss logging;hibernate core的依赖项)。你可以读到它

一个帮助您的示例:

<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
     http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app
 http://xmlns.oracle.com/weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd">

<wls:weblogic-version>12.2.1.2.0</wls:weblogic-version>

<wls:context-root>example</wls:context-root>

<wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>org.hibernate.*</wls:package-name>
        <wls:package-name>org.apache.*</wls:package-name>
        <wls:package-name>javax.validation.*</wls:package-name>
        <wls:package-name>com.fasterxml.jackson.*</wls:package-name>
        <wls:package-name>org.slf4j.*</wls:package-name>
        <wls:package-name>org.jboss.logging.*</wls:package-name>
    </wls:prefer-application-packages>
    <wls:prefer-application-resources>
        <wls:resource-name>org/slf4j/impl/StaticLoggerBinder.class</wls:resource-name>
    </wls:prefer-application-resources>
</wls:container-descriptor>

12.2.1.2.0
例子
org.springframework*
org.hibernate*
org.apache*
javax.validation*
com.fasterxml.jackson*
org.slf4j*
org.jboss.logging*
org/slf4j/impl/StaticLoggerBinder.class


上述配置使用SLF4J作为日志API,使用新的Log4J(log4j2)作为日志后端。但是,即使您直接使用Log4J(请注意,较旧的Log4J现在已被弃用),这也应该可以满足您的需要。

我已经在不同场合使用过首选软件包,我在我的应用程序中使用了最新的番石榴,weblogic也有自己的旧版本,这也让我非常痛苦。明天我会试试,谢谢。我又遇到了类似的问题-今天我遇到了
javax.ejb.EJBException:ejb异常::java.lang.UnsupportedOperationException:应用程序必须提供JDBC连接
,它被深埋在weblogic服务器日志中。我猜这是因为它不是一个hibernate异常,所以它最终出现了,我能强迫它通过log4j吗?我尝试“将weblogic标准错误/输出重定向到文件”,但没有帮助。