Java 记录器以不同的阈值将记录器连接到多个附加器

Java 记录器以不同的阈值将记录器连接到多个附加器,java,log4j,Java,Log4j,我有两个附件。一个连接到控制台,另一个连接到日志文件。但这并不重要。我的问题是,我希望所有的东西都转到信息级别的文件。然而,控制台是不同的。我不想在警告或信息级别触碰控制台,因为他们散布的信息比用户需要的多得多 假设我有三个记录器A、B、C。A、B和C都应该转到信息级别的文件附加器。A应转到控制台获取信息,B应转到控制台获取警告,C应转到控制台获取错误。执行此操作的log4j配置是什么样子的?类似的配置应该可以工作: <?xml version="1.0" encoding="UTF-8"

我有两个附件。一个连接到控制台,另一个连接到日志文件。但这并不重要。我的问题是,我希望所有的东西都转到信息级别的文件。然而,控制台是不同的。我不想在警告或信息级别触碰控制台,因为他们散布的信息比用户需要的多得多


假设我有三个记录器A、B、C。A、B和C都应该转到信息级别的文件附加器。A应转到控制台获取信息,B应转到控制台获取警告,C应转到控制台获取错误。执行此操作的log4j配置是什么样子的?

类似的配置应该可以工作:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz"
                 ignoreExceptions="false">
        <PatternLayout>
            <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
    </RollingFile>
    <Console name="STDOUT" target="SYSTEM_OUT" ignoreExceptions="false">
        <PatternLayout pattern="%m%n"/>
    </Console>
</Appenders>
<Loggers>
    <Logger name="A" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="info" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Logger name="B" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="warn" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Logger name="C" level="trace" additivity="false">
        <AppenderRef ref="STDOUT" level="error" />
        <AppenderRef ref="RollingFile" level="info"/>
    </Logger>
    <Root level="trace">
        <AppenderRef ref="STDOUT" level="trace" />
        <AppenderRef ref="RollingFile" level="trace"/>
    </Root>
</Loggers>

%d%p%c{1.}[%t]%m%n

假设您使用的是log4j2