【问题标题】:Using log4j in an ear under weblogic 12c在 weblogic 12c 下使用 log4j
【发布时间】:2016-07-27 13:08:33
【问题描述】:

我正在尝试使用 slf4j 配置 log4j 以在 weblogic 下运行并使用 web 模块和 ejb 管理 ear 应用程序的日志。虽然 web 模块在我配置的日志文件中打印消息,但 ejb 没有。好像ejb看不到配置文件,也没有初始化log4j。

耳朵有这样的结构:

--APP-INF
  --LIB
     --log4j-1.2.17.jar
     --slf4j-api-1.7.5.jar
     --slf4j-log4j12-1.7.5.jar
  --classes
    --log4j.xml
--META-INF
EJB.JAR
WEB.WAR

以及ear的APP-INF/classes文件夹下的配置文件(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 debug="true"
    xmlns:log4j='http://jakarta.apache.org/log4j/'>

        <appender name="console" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                    <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
            </layout>
    </appender>


    <appender name="file" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false" />
        <param name="maxFileSize" value="1000KB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="/shared_ISILON_WLS/AppLogs/project/project.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <appender name="fileSQL" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false" />
        <param name="maxFileSize" value="1000KB" />
        <param name="maxBackupIndex" value="5" />
        <param name="file" value="/shared_ISILON_WLS/AppLogs/project/project_SQL.log" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{dd-MM-yyyy HH:mm:ss} %-5p %c{1}:%L - %m%n" />
        </layout>
    </appender>

    <logger name="es.project">
        <level value="INFO" />
        <appender-ref ref="file" />
    </logger>
        <logger name="org.primefaces">
            <level value="INFO" />
            <appender-ref ref="file" />
        </logger>
    <logger name="org.eclipse.persistence">
            <level value="INFO"/>
            <appender-ref ref="fileSQL" />       
        </logger>

</log4j:configuration>

从我检查的文档和其他stackoverflow问题来看,配置文件必须从ejb模块中读取,对吗? 我还检查了模块内没有其他配置文件。 ejb模块查看配置文件还有什么需要配置的吗?

【问题讨论】:

  • 你能解决这个问题吗?我有完全相同的问题。
  • 我能够解决这个问题,只需在 ejb weblogic.xml 中添加 &lt;wls:prefer-application-packages&gt; &lt;wls:package-name&gt;com.oracle.foo&lt;/wls:package-name&gt; &lt;/wls:prefer-application-packages&gt;。希望对你有帮助

标签: jakarta-ee log4j ejb weblogic slf4j


【解决方案1】:

您必须确保 log4j.xml 文件在 EJB jar 的类路径中可用。您可以查看 jar 的清单以确保它在那里。一旦它出现在类路径中,就会自动加载。

【讨论】:

  • 我已添加到 ejb jar 的 manifest.mf:Class-Path: APP-INF/classes/log4j.xml 但没有任何结果。无论如何都可以调试ejb中的log4j发生的事情?
【解决方案2】:

在 app.ear/APP-INF/classes 目录中添加 log4j.xml 文件对我有用。你要出系统吗?类路径上可能还有另一个 log4j.xml,它为 org.hiberante 定义记录器并在其他地方写入日志...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-29
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 2017-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多