【问题标题】:Log4j + Hibernate 5 + Weblogic 12.2.1Log4j + 休眠 5 + Weblogic 12.2.1
【发布时间】:2018-04-26 05:25:55
【问题描述】:

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/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] %d{yyyy-MM-dd HH:mm:ss} [%x] [%C.%M] - %m %n" />
        </layout>
    </appender>

    <appender name="logFile" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="../logs/mylog.log"/>
        <param name="MaxFileSize" value="100MB"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="[%5p] %d{yyyy-MM-dd HH:mm:ss} - %m %n" />
        </layout>
    </appender>

    <logger name="interceptorLog" additivity="false">
        <level value="INFO" />
        <appender-ref ref="logFile" />
    </logger>

    <root>
        <priority value="ALL" />
        <appender-ref ref="logFile"/>
    </root>

</log4j:configuration>

现在,我自己的所有日志都转到mylog.log - 这很好。当发生一些 Hibernate 异常时,这些日志会转到 &lt;weblogic-domain&gt;/servers/AdminServer/MyApplication.log,我希望它们转到与我的日志相同的文件。

此时我基本上尝试了所有方法:迁移到 log4j2(遵循this),将休眠记录器/类别添加到我的log4j.xml,例如:

<logger name="org.hibernate">
    <level value="ALL" />
    <appender-ref ref="logFile"/>
</logger>

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

我最关心的是异常,我希望将它们与我的所有自定义日志一起查看,而不是隐藏在 Weblogic 域文件中的某个位置。

【问题讨论】:

    标签: hibernate logging log4j log4j2 weblogic12c


    【解决方案1】:

    处理 Java EE 应用程序服务器(尤其是 WLS)有时会令人沮丧,但没有完全了解它们的类加载机制。长话短说,为了使这项工作与 WLS 12 一起使用,您需要指示 WebLogic 使用部署描述符(weblogic .xml)。你可以阅读它here

    一个帮助你的例子:

    <?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>
    

    以上配置使用 SLF4J 作为日志 API,新的 Log4J (log4j2) 作为日志后端。但是,即使您立即使用 Log4J(请注意,旧的 log4j 现在已被弃用),这也应该可以帮到您。

    【讨论】:

    • 我已经在不同的场合使用过那个prefer-packages,我在我的应用程序中使用了最新的番石榴,而weblogic有他自己的旧版本,也让我很痛苦。明天试试,谢谢。
    • 我又遇到了类似的问题——今天我有javax.ejb.EJBException: EJB Exception: : java.lang.UnsupportedOperationException: The application must supply JDBC connections,它被深埋在 weblogic 服务器日志中。我想这是因为它不是休眠异常,因此它结束了,我可以强制它通过 log4j 吗?我尝试了“将 weblogic 标准错误/输出重定向到文件”,但没有帮助。
    猜你喜欢
    • 2016-11-29
    • 2011-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-04
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多