上下文 我在weblogic中部署了两个java应用程序(A.EAR和B.EAR)。两个应用程序都在EAR中捆绑了自己的log4j jar(打包为maven依赖项)。我为这些应用程序使用了saperate log4j.properties(a-log4j.properties和b-log4j.properties)文件,并指定它们记录到不同的日志文件(a.log和b.log)。
问题: 当我只运行应用程序A时,我在a.log中获取日志。但是在我启动应用程序B一段时间后,应用程序A和B都会登录到b.log。在执行A重新启动之前,不会在.log中写入任何其他内容。 简单来说,我从最后开始的所有应用程序日志的应用程序都被写入该应用程序的日志中。有谁知道为什么会发生这种情况?
我正在使用WebLogic 11g和log4j 1.2.17。
解决方案/修复:
显然,如果是这种情况,则意味着由于两个Web应用程序将共享由Weblogic提供服务全局库的根类加载器,我们需要指定在服务器类之后加载应用程序类。这可以通过以下方式完成:
<wls:prefer-application-packages>
<wls:package-name>org.apache.log4j.*</wls:package-name>
</wls:prefer-application-packages>
在11.3之前的版本中,如11g,您可以这样做:
<prefer-application-packages>
<package-name>org.apache.log4j.*</package-name>
</prefer-application-packages>