Java Log4j在Weblogic中记录到错误的日志文件

Java Log4j在Weblogic中记录到错误的日志文件,java,log4j,weblogic11g,Java,Log4j,Weblogic11g,上下文: 我在weblogic中部署了两个java应用程序(A.EAR和B.EAR)。这两个应用程序都在EAR中捆绑了自己的Log4JJAR(打包为maven依赖项)。我为这两个应用程序使用了saperate log4j.properties(a-log4j.properties和b-log4j.properties)文件,并指定它们记录到不同的日志文件(a.log和b.log) 问题: 当我只运行应用程序A时,我会在A.log中获取日志。但是过了一段时间,当我启动应用程序B时,应用程序a和B都

上下文: 我在weblogic中部署了两个java应用程序(A.EAR和B.EAR)。这两个应用程序都在EAR中捆绑了自己的Log4JJAR(打包为maven依赖项)。我为这两个应用程序使用了saperate log4j.properties(a-log4j.properties和b-log4j.properties)文件,并指定它们记录到不同的日志文件(a.log和b.log)

问题: 当我只运行应用程序A时,我会在A.log中获取日志。但是过了一段时间,当我启动应用程序B时,应用程序a和B都会记录到B.log。在对执行重新启动之前,不会在.log中写入任何其他内容。 简单地说,我最后启动哪个应用程序,所有应用程序日志都会写入该应用程序的日志中。有人知道为什么会这样吗

我使用的是WebLogic11g和log4j 1.2.17

解决方案/修复:

另外,如果是这种情况,这意味着两个web应用程序将共享一个根类加载器,为Weblogic加载的全局库提供服务,我们需要指定在服务器类之后加载应用程序类。这可以通过以下方式实现:

<wls:prefer-application-packages>
<wls:package-name>org.apache.log4j.*</wls:package-name> 
</wls:prefer-application-packages>

org.apache.log4j.*
在早于10.3.3的版本(如11g)中,您可以通过以下方式执行此操作:

<prefer-application-packages>
<package-name>org.apache.log4j.*</package-name>
</prefer-application-packages>

org.apache.log4j*

您如何包装您的耳朵。请在问题后附上一张快照