一个web应用程序下有多个第一方jar文件和多个log4j2配置



如果您有多个第一方log4j2配置,比如在src/main/resources中。如何将日志记录配置设置为彼此独立,这样它们就不会冲突。

我现在的想法是有两个不同的文件配置,而不是定义ROOT节点和指定不同的包。

我还尝试过使用两个不同的conf文件。log4j2.xml和log4j2-test.xml,但这只适用于两个库。log4j2-myapp.xml工作吗?文档中说使用系统属性log4j.file=,但这不起作用,因为我想要两个配置文件。此外,有时我们无法控制此web容器的系统属性。

如何解决多个log4j2配置的问题。

Log4j2版本,java8,websphere容器,多个1stparty jar。

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="trace">
<Properties>
<Property name="logserverdir">defaultvm2</Property>
</Properties>
<!-- Log4j2 configuration, use with greylog -->
<Appenders>        
<RollingFile name="MainApiCommonsAppenderApi" fileName="/usr/local/pfs/logs/defaultvm2/log4j_api.log"           
filePattern="/usr/local/pfs/logs/defaultvm2/log4j_api.%i.log">
<PatternLayout pattern="%d [%t] -- [%X{mdcLogSessionId} - %-5p - %C{1}.%M(%F:%L) - %m%n"/>
<Policies>
<SizeBasedTriggeringPolicy size="140MB" />
</Policies>
<DefaultRolloverStrategy max="5" />     
</RollingFile>          
</Appenders>
<Loggers>
<Logger name="com.primerica.pfn" level="info" additivity="false">
<AppenderRef ref="MainApiCommonsAppenderApi" />
<AppenderRef ref="GraylogCommons" /> 
</Logger>     
<Logger name="org.springframework" level="debug" additivity="false">
<AppenderRef ref="MainApiCommonsAppenderApi" />
<AppenderRef ref="GraylogCommons" /> 
</Logger>          
</Loggers>
</Configuration>

从评论来看,这是最好的答案:

"你可能会考虑使用复合配置。通常,我的想法是,应用程序作为一个整体应该定义其日志记录配置,而不是单独的库。库不知道它是如何使用的,应用程序知道它如何使用库。也许应用程序a使用类R和S,并希望看到它们的详细消息,而应用程序B使用类X和Y并且需要记录来自那些""的消息

最新更新