Jakarta ee Quartz-应用程序级别的log4j问题

Jakarta ee Quartz-应用程序级别的log4j问题,jakarta-ee,log4j,quartz-scheduler,weblogic11g,Jakarta Ee,Log4j,Quartz Scheduler,Weblogic11g,我使用的是WebLogic116、Ejb3.0、quartz all 1.8.5 当我从服务器的lib目录中删除log4jjar时,quartz出现了问题 我不能在那里使用log4j(在lib下)的原因是我希望Weblogic中的每个部署都有自己的日志。因此,每个部署都有自己的log4jjar 当然,如果将log4j.jar放回server/libdir,那么quartz可以正常工作,但是我不能为我的部署提供单独的日志 当我从lib中删除log4j jar时,这是我从quartz得到的错误: j

我使用的是WebLogic116、Ejb3.0、quartz all 1.8.5

当我从服务器的lib目录中删除log4jjar时,quartz出现了问题

我不能在那里使用log4j(在lib下)的原因是我希望Weblogic中的每个部署都有自己的日志。因此,每个部署都有自己的log4jjar

当然,如果将
log4j.jar
放回
server/lib
dir,那么quartz可以正常工作,但是我不能为我的部署提供单独的日志

当我从lib中删除log4j jar时,这是我从quartz得到的错误:

java.lang.NoClassDefFoundError: org/apache/log4j/Level at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:83) at org.slf4j.impl.StaticLoggerBinder.(StaticLoggerBinder.java:53) at org.slf4j.LoggerFactory.bind(LoggerFactory.java:122) at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:112) at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254) .. java.lang.NoClassDefFoundError:org/apache/log4j/Level 位于org.slf4j.impl.StaticLoggerBinder(StaticLoggerBinder.java:83) 位于org.slf4j.impl.StaticLoggerBinder(StaticLoggerBinder.java:53) 位于org.slf4j.LoggerFactory.bind(LoggerFactory.java:122) 在org.slf4j.LoggerFactory.performinization(LoggerFactory.java:112)上 位于org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:268) 位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:241) 位于org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254) .. 有几个选择

1) 将log4j.jar部署为共享库或可选包。 然后从应用程序中引用log4j。如果您的应用程序是EAR,那么您可以使用Library ref元素从weblogic-application.xml中将其作为共享库引用,并且在部署应用程序时,log4j.jar会添加到EAR的APP-INF/lib中。如果您有WAR,则可以通过修改META-INF/manifest.mf文件将其作为可选包引用: 扩展列表:log4jjar log4jjar扩展名:log4j

其中log4j是共享库/可选包的部署名称


2) 在以前部署的应用程序中使用过滤类加载器。

我通过将引用的JAR添加到部署中的ear文件夹中解决了这个问题。