我尝试使用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模块来查看配置文件吗?
答案 0 :(得分:0)
您必须确保在EJB jar的类路径中提供了log4j.xml文件。您可以查看jar的清单以确保它在那里。一旦它出现在类路径中,它将自动加载。
答案 1 :(得分:0)
在app.ear / APP-INF / classes目录中添加log4j.xml文件对我有用。你有系统吗?可能是类路径上有另一个log4j.xml,它定义了org.hiberante的记录器,并在其他地方写日志......