在weblogic 12c下使用log4j

时间:2016-07-27 13:08:33

标签: java-ee log4j ejb weblogic slf4j

我尝试使用slf4j配置log4j以在weblogic下运行,并使用web模块和ejb管理耳朵应用程序的日志。当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

耳朵的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模块来查看配置文件吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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