Jakarta ee Quartz-应用程序级别的log4j问题
我使用的是WebLogic116、Ejb3.0、quartz all 1.8.5 当我从服务器的lib目录中删除log4jjar时,quartz出现了问题 我不能在那里使用log4j(在lib下)的原因是我希望Weblogic中的每个部署都有自己的日志。因此,每个部署都有自己的log4jjar 当然,如果将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
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文件夹中解决了这个问题。