Java web应用程序下的多个第1方jar文件和多个log4j2配置

Java web应用程序下的多个第1方jar文件和多个log4j2配置,java,maven,log4j,log4j2,Java,Maven,Log4j,Log4j2,如果您有多个第1方log4j2配置,比如在src/main/resources中。如何将日志记录配置设置为彼此独立,从而避免冲突 我现在的想法是使用两种不同的文件配置,而不是定义根节点和指定不同的包 我还尝试过使用两个不同的conf文件。log4j2.xml和log4j2-test.xml,但这只适用于两个库。log4j2-myapp.xml有效吗?文档中说使用一个系统属性log4j.file=但这不起作用,因为我需要两个配置文件。此外,有时我们无法控制此web容器的系统属性 如何解决多个log

如果您有多个第1方log4j2配置,比如在src/main/resources中。如何将日志记录配置设置为彼此独立,从而避免冲突

我现在的想法是使用两种不同的文件配置,而不是定义根节点和指定不同的包

我还尝试过使用两个不同的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>

默认VM2

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


“您可以考虑使用复合配置。一般来说,我认为应用程序作为一个整体应该定义其日志记录配置,而不是单个库。库不知道它是如何使用的,应用程序知道它是如何使用库的。可能应用程序A使用类R和S并希望查看来自它们的详细消息,而应用程序B使用类X和Y并需要记录来自这些类的消息“

这有点不清楚,因为单个应用程序使用单个日志属性。您希望多个日志记录配置文件如何在一个应用程序的范围内覆盖其属性?这样您就可以提供主配置文件并包括其他配置文件。这将允许您不必担心其他文件的更新,因为您只需将它们包括在内即可。单个应用程序使用多个日志属性。我不想让他们互相凌驾。如果有:LIB1:Log4J2-LIb1.xml,LIB2:Log4J2-LB2.XMLXCARES,您可能会考虑使用。一般来说,我认为应用程序作为一个整体应该定义其日志记录配置,而不是单个库。库不知道它是如何使用的,应用程序知道它是如何使用库的。可能应用程序A使用类R和S并希望查看来自它们的详细消息,而应用程序B使用类X和Y并需要记录来自这些类的消息。