您应该在 log4j 附加程序中为“A”和“B”使用 TCLFilter/TCLMCFilter 来分离共享类的应用程序日志。在此 wiki 上阅读有关它的更多信息- SeparatingApplicationLogs
例如:
<appender name="LogA" class="org.apache.log4j.FileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorHandler>
<param name="Append" value="false"/>
<param name="File" value="some_directory/log/a.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLMCFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="a.ear"/>
</filter>
</appender>
请注意,对于 .war 文件,文件名更改为“a-exp.war”,因此如果您使用的是战争,则需要相应地更改“DeployURL”。